26. Remove Duplicates from Sorted Array
程序员文章站
2024-02-17 12:03:10
...
题目描述:给定一个排好序的数组,删除其中的重复元素使得每个元素只出现一次,返回去重后的数组长度。要求原地操作。
分析:排好序说明重复元素都是相邻的,要原地操作就只能在原数组上修改元素位置,将不同的元素移到数组前部分。
方法一:设定一前一后两个下标指针,遍历一遍原数组。若快指针指向的元素没出现过,则将此元素赋给慢指针所指位置,两下标同时前移;若出现过则快指针前移。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.size() == 0)
return 0;
int j = 1;
for (int i = 1; i < nums.size(); i ++)
{
if (nums[i] != nums[i - 1])
nums[j ++] = nums[i];
}
return j;
}
};
方法二:用STL的unique和distance函数,效率更高。
unique作用于数组或vector,作用是将数组中不同的元素移到前部分,重复的元素并未删除,只是移到后面,所以数组大小并没有变,只是返回第一个重复元素的下标。奇怪的是测试发现后移之后会改变重复元素的值。
distance作用于数组或vector,作用是返回两迭代器或下标之间的距离。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
return distance(nums.begin(), unique(nums.begin(), nums.end()));
}
};
上一篇: Java中遍历Map的几种方法
下一篇: 关于java的map遍历几种常用方法
推荐阅读
-
26. Remove Duplicates from Sorted Array
-
leetcode82: Remove Duplicates from Sorted ListII
-
【一天一道LeetCode】#26. Remove Duplicates from Sorted Array
-
LeetCode 83. Remove Duplicates from Sorted List
-
83. Remove Duplicates from Sorted List
-
LeetCode 83. Remove Duplicates from Sorted List
-
LeetCode 83. Remove Duplicates from Sorted List ***
-
Leetcode 83. Remove Duplicates from Sorted List
-
Leetcode No.26 Remove Duplicates from Sorted Array(c++实现)
-
26. Remove Duplicates from Sorted Array