力扣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] 就是出错的用例:

//img.mukewang.com/szimg/6098417d09407ac804170223.jpg


你的程序在数组中只有一个元素的情况下,一上来判断 if (nums[0] != nums[1]),调用 nums[1],就数组越界了。


继续加油!:)


0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程

相似问题