leetcode-Remove Duplicates from Sorted Array II

来源:互联网 发布:拍照识别植物软件 编辑:程序博客网 时间:2024/05/13 08:59

算法思想: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],调了好长时间

不能想当然啊,粗心大意

0 0
原创粉丝点击