您的位置:首页 > 其它

LeetCode---Remove Duplicates from Sorted List、Remove Duplicates from Sorted List II解题分析

2016-05-07 21:30 204 查看
题意描述:移除已排序数组中的相同元素,使得每个元素只出现一次,返回新数组长度。如果每个元素允许最多出现两次,返回新的数组长度呢

解题分析:题中明确说明数组已排好序,所以对于让每个元素只出现一次情况,声明两个变量表示下标从i=0,j=1开始,如果j所指向元素与i指向元素相同,则j++,否则++i位置的元素就等于j位置的元素,等到j遍历完整个数组,则数组处理完毕,新的数组的长度就是i+1

int removeDuplicates(int[] nums) {
if(nums.length < 1)//当数组长度小于1时不可能有重复元素
return nums.length;

int index = 0;
for(int i=1; i<nums.length; i++){
if(nums[index] != nums[i]){
nums[++index] = nums[i];
}
}

return index+1;
}


对于允许每个元素最多可以出现两次的情况,跟上面处理方法差不多
int removeDuplicates(int[] nums) {
if(nums.length < 2)
return nums.length;

int index = 2;
for(int i=2; i<nums.length; i++){
if(nums[i] != nums[index-2])
nums[index++] = nums[i];
}

return index;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: