您的位置:首页 > 其它

leetcode-Remove Duplicates from Sorted Array II

2015-07-13 20:59 405 查看
算法思想:1、如果数组的长度小于2则删除重复后的数组长度则为原数组的长度

2、如果数组的长度大于2,设置两个变量初值i=0,j=1,k=0;

2.1如果num[i]=num[j],则只需把num[++k]=n[j]一次

2.2如果num[i]=num[j++],则把较大的j一直后移直到出现新的数字或者j的值大于数组长度,

2.3将j的值赋给i,并将j后移,判断i若小于数组长度则因新出现了一个数则,将该新的数赋值给num[++k]

重复2.1,2.2,2.3直到i,j大于数组长度

public class Solution {
public int removeDuplicates(int[] nums) {
int len=nums.length;
int i=0,k=0,j=1;
if(len<=2)
return len;
else {
nums[k]=nums[i];
while(i<len&&j<len){
if(nums[i]==nums[j])
{
nums[++k]=nums[i];
}
while(i<len&&j<len&&nums[i]==nums[j])
{
j++;
}

i=j;
j++;
if(i<len)
{
nums[++k]=nums[i];
}
else break;
}

return k+1;
}
}
}
总结,要注意是k++与++k的不同,若k=0,则表达式k++的值为0,k的值变为1;表达式++k的值为1,k的值为1

因为刚开始的时候把nums[k++]=n[j],结果一直不通过,不通过的例子是输入的是[1,2,2],错误输出了[2,2,2],调了好长时间

不能想当然啊,粗心大意
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: