【数组】26. 删除排序数组中的重复项
题目:

解答:
思路:双指针法。
数组完成排序后,可以放置两个指针i和j,其中i是慢指针,而j是快指针。只要nums[i] = nums[j],就增加j以跳过重复项。
当遇到nums[i] != nums[j]时,跳过重复项的运行已经结束,因此必须把它(nums[j])的值复制到nums[i+1]。然后递增i,接着我们再次重复相同的过程,直到j到达数组的末尾为止。
1 class Solution { 2 public: 3 int removeDuplicates(vector<int>& nums) 4 { 5 int len = nums.size(); 6 if (len <= 1) // 注意这里的判定,否则提交会不过。 7 { 8 return len; 9 } 10 11 int begin = 0; 12 int end = 0; 13 while (end < len) 14 { 15 if (nums[begin] == nums[end]) 16 { 17 end++; 18 } 19 else 20 { 21 nums[++begin] = nums[end++]; 22 } 23 } 24 25 return begin + 1; 26 } 27 };

浙公网安备 33010602011771号