题目地址
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
思路
此题就是O(n)的解法,拼速度的话,也就是剪剪枝
注意题目中:你不需要考虑数组中超出新长度后面的元素。 说明是要对原数组进行操作的
解法
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.empty()) return 0; // 别忘记空数组的判断
int index = 0;
for (int i = 0; i < (nums.size() - 1); i++){
if(nums[i] != nums[i + 1]) { // 一旦发现和前一个不相同,就把num[i+1] 赋值给 nums[++index]
nums[++index] = nums[i + 1]; // index = 0 的数据一定是不重复的,所以直接 ++index
}
}
return index + 1; //别忘了index是从0开始的,所以返回index + 1
}
};
我是代码君,在BAT从事技术研发多年,利用工作之余重刷leetcode,更多原创文章欢迎关注「代码随想录」。