删除有序数组中的重复项
难度:简单 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++
代码如下: