题目:删除排序数组中的重复项
题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
看到这道题,第一反映是直接来暴力:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len = nums.size();
for(int i = 1; i < len; i++)
{
for(int j = 0; j < i; j++)
{
if(nums[j] == nums[i])
{
int k = i;
while(k < len - 1)
{
nums[k] = nums[k + 1];
k++;
}
len--;
i--;
break;
}
}
}
return len;
}
};
虽然能够求解,但速度惨不忍睹。
后来看了官方的解答,感觉确实很巧妙,速度确实提高了很多:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len = nums.size();
if(len == 0) return 0;
int i = 0;
for(int j = 1; j < len; j++)
{
if(nums[j] != nums[i])
{
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
};
写的时候还忽略了输入为空数组的情况。
路漫漫其修远兮,吾将上下而求索!