本文主要是介绍数组-leetcode#80-删除数组中重复两次以上的数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
class Solution {
public:int removeDuplicates(vector<int>& nums) {if (nums.size() <= 1)return nums.size();int current = 1; //新数组中有效位置的最后一位,新加入的数据应当写到current+1for (int i = 2; i < nums.size();i++) //从第三位开始循环,前两位无论如何都是要加入新数组的{if(nums[i]!=nums[current]||nums[i]!=nums[current-1]){current++;nums[current]=nums[i];}} return current+1; }
};
(1)明确双指针都代表什么意思,i表示当前遍历的数字下标,current代表已经处理完的下标,也就是说下一个可以放数字的位置是current+1;
(2)是否可以更新逻辑,如果当前遍历的数字nums[i]等于nums[current],那么就要看nums[current-1]是不是也跟nums[i]相等,如果相等,那么需要丢弃当前nums[i],如果不相等,可以更新;如果当前遍历的数字nums[i]不等于nums[current],那么无论nums[current-1]和nums[current]是否相等,都可以更新。
(3)更新操作,current++;nums[current]=nums[i];
(4)返回结果:current是最后一个更新的下标,长度就是current+1。
这篇关于数组-leetcode#80-删除数组中重复两次以上的数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!