删除有序数组中的重复项

难度:简单 OJ链接

解法一:

思路:
当nums[cur]==nums[next],我们将next++,一直+到nums[cur]!=nums[next],然后将此时的cur指向的值赋值给dst处,然后dst++,将next赋给cur,next++

过程如下:

此时nums[cur]==nums[next],next++,next指向1,然后nums[cur]!=nums[next]

我们将nums[dst] = nums[cur],然后dst++,将next赋给cur,next++

此时nums[cur]==nums[next],next++,一直加到2,此时nums[cur]!=nums[next]

我们将nums[dst] = nums[cur],然后dst++,将next赋给cur,next++

此时nums[cur]==nums[next],next++,一直加到3,此时nums[cur]!=nums[next]

我们将nums[dst] = nums[cur],然后dst++,将next赋给cur,next++

此时nums[cur]==nums[next],next++,此时nums[cur]!=nums[next]

我们将nums[dst] = nums[cur],然后dst++,将next赋给cur,next++

但是此时的next出界了,我们把最后cur位置上的值直接赋给dst,然后dst++

代码如下:

解法二:

思路:
我们设置一个src从1开始,然后让src-1和src比较,如果相等,让src++,一直到src-1和src不相等,然后我们将src-1的值赋给dst,dst++,src++


此时,nums[src-1]和nims[src]相等,src++

此时,nums[src-1]和nums[src]不相等,我们将nums[dst]=nums[src-1],dst++,src++

此时,nums[src-1]和nims[src]相等,src++,一直加到2

此时,nums[src-1]和nims[src]不相等,我们将nums[dst]=nums[src-1],dst++,src++

此时,nums[src-1]和nims[src]相等,src++

此时,nums[src-1]和nims[src]不相等,我们将nums[dst]=nums[src-1],dst++,src++

此时,nums[src-1]和nims[src]相等,src++

此时,nums[src-1]和nims[src]不相等,我们将nums[dst]=nums[src-1],dst++,src++

但是此时src出界了,我们把最后src-1位置上的值直接赋给dst,然后dst++

代码如下: