开心,第一次AC一个题目这么快。
题目链接: Remove Duplicates from Sorted Array
1. Description
-
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.
-
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
Example 1:
Given nums = [1,1,2],
-
Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
-
It doesn’t matter what you leave beyond the returned length.
Example 2:
Given nums = [0,0,1,1,1,2,2,3,3,4],
-
Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.
-
It doesn’t matter what values are set beyond the returned length.
2. 思路
刚拿到这个的题目的第一个感觉就是使用two pointer大法,然后夹逼,统计计数。然后突然灵光一闪,这不就是一个删除重复元素,然后返回删除之后元素的题嘛,然后就很顺利了~
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
sort(nums.begin(), nums.end());
nums.erase(unique(nums.begin(), nums.end()), nums.end());
return nums.size();
}
};
代码也是很简洁的,真香~
STL 真的好用