leetcode的题目 26. 删除排序数组中的重复项 283. 移动零

26. 删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例 1:

给定数组 nums = [1,1,2],

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。

你不需要考虑数组中超出新长度后面的元素。

示例 2:

给定 nums = [0,0,1,1,1,2,2,3,3,4],

函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。

你不需要考虑数组中超出新长度后面的元素。

思路:cnt从0开始(从第一个开始),往后找出不同的,找到后将它放到cut的后面,再将cut+1,不断重复,知道遍历完毕,cnt一直指向于无重复的数组的最后一个。

不能死脑筋

283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]

输出: [1,3,12,0,0]

思路:与上一题类似,将非0的项往前移动,用cnt来指向非0数组的最后一个的下一个,最后将从cnt以后的项全部置0

脑洞要再大一点

推荐阅读更多精彩内容