顺序表面试题 Leetcode26. 删除有序数组中的重复项


删除有序数组中的重复项

难度:简单 OJ链接
图片[1] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
解法一:
图片[2] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
思路:
当nums[cur]==nums[next],我们将next++,一直+到nums[cur]!=nums[next],然后将此时的cur指向的值赋值给dst处,然后dst++,将next赋给cur,next++

过程如下:
图片[3] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时nums[cur]==nums[next],next++,next指向1,然后nums[cur]!=nums[next]
图片[4] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
我们将nums[dst] = nums[cur],然后dst++,将next赋给cur,next++
图片[5] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时nums[cur]==nums[next],next++,一直加到2,此时nums[cur]!=nums[next]
图片[6] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
我们将nums[dst] = nums[cur],然后dst++,将next赋给cur,next++
图片[7] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时nums[cur]==nums[next],next++,一直加到3,此时nums[cur]!=nums[next]
图片[8] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
我们将nums[dst] = nums[cur],然后dst++,将next赋给cur,next++
图片[9] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时nums[cur]==nums[next],next++,此时nums[cur]!=nums[next]
图片[10] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
我们将nums[dst] = nums[cur],然后dst++,将next赋给cur,next++
图片[11] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
但是此时的next出界了,我们把最后cur位置上的值直接赋给dst,然后dst++
图片[12] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
代码如下:
图片[13] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL

解法二:
图片[14] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
思路:
我们设置一个src从1开始,然后让src-1和src比较,如果相等,让src++,一直到src-1和src不相等,然后我们将src-1的值赋给dst,dst++,src++

图片[15] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时,nums[src-1]和nims[src]相等,src++
图片[16] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时,nums[src-1]和nums[src]不相等,我们将nums[dst]=nums[src-1],dst++,src++
图片[17] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时,nums[src-1]和nims[src]相等,src++,一直加到2
图片[18] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时,nums[src-1]和nims[src]不相等,我们将nums[dst]=nums[src-1],dst++,src++
图片[19] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时,nums[src-1]和nims[src]相等,src++
图片[20] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时,nums[src-1]和nims[src]不相等,我们将nums[dst]=nums[src-1],dst++,src++
图片[21] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时,nums[src-1]和nims[src]相等,src++
图片[22] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
此时,nums[src-1]和nims[src]不相等,我们将nums[dst]=nums[src-1],dst++,src++
图片[23] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
但是此时src出界了,我们把最后src-1位置上的值直接赋给dst,然后dst++
图片[24] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
代码如下:
图片[25] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL
图片[26] - 顺序表面试题 Leetcode26. 删除有序数组中的重复项 - MaxSSL

© 版权声明
THE END
喜欢就支持一下吧
点赞0分享