力扣80题
来源:3-4 即使简单的问题,也有很多优化的思路
慕哥6157257
2021-05-09
波波老师,力扣80题,我的程序把两个示例跑通了,提交却是错误的。我找不到问题所在,像您求助!
class Solution {
public:
int removeDuplicates(vector& nums) {
//有效元素的存放位置[0…j)
int j = 0;
if (nums[0] != nums[1]) {
j += 1;
}
for (int i = 1; i < nums.size(); i++) {
if (i == nums.size() - 1|| nums[i] != nums[i + 1]) {
//当前遍历元素不等于后一个元素时,进行交换操作,最后一个元素为特殊情况
if (nums[i - 1] == nums[i]) {//出现两次以上
swap(nums[i - 1], nums[j++]);
swap(nums[i], nums[j++]);
}
else {//只出现一次
swap(nums[i], nums[j++]);
}
}
}
return j;
}
};
写回答
1回答
-
liuyubobobo
2021-05-10
把程序提交给 Leetcode,Leetcode 会告诉你出错的用例。比如把你的程序提交给 Leetcode,显示的 [1] 就是出错的用例:
你的程序在数组中只有一个元素的情况下,一上来判断 if (nums[0] != nums[1]),调用 nums[1],就数组越界了。
继续加油!:)
00
相似问题