Leetcode #26 关于自己的代码

来源:3-4 即使简单的问题,也有很多优化的思路

慕仰9094206

2019-03-10

class Solution{

public:
    int removeDuplicates(vector<int> nums) {

        if (nums.size() == 0) return 0;

        int i = 0;

        for (int j = 1; j < nums.size(); j++) {
            if (nums[j] != nums[i]) {
                i++;
                nums[i] = nums[j];
            }
        }
        
        return i + 1;
    }

};

我调试的话{1,1,2} 的数据,会输出{1,2}
但是Leetcode显示结果是{1,1}
这个方法是根据Solution提出来的

想问一下到底出了什么问题

写回答

3回答

liuyubobobo

2019-03-11

可能我没有特别理解你的问题。你的算法本身是错误的。


对于[1, 1, 2]这个数据,正确答案是[1, 2],你的程序运行结果是[1, 1]。


在本机测试一下试试看?


这个测试用例只有三个数据,执行的代码指令数也就10几条。仔细调试跟踪一下,看看为什么对于[1, 1, 2]这个测试用例,你的程序得到的结果是[1, 1],而不是[1, 2]?

调试程序可是学习算法,锻炼编程思维能力的重要方式哦。


加油!:)

0
6
慕仰9094206
非常感谢!
2019-03-12
共6条回复

慕粉3869017

2020-06-02


private int RemoveDuplicates(int[] nums) {
   int i=0;
   for (int j=0;j<nums.length;j++){
       if (nums[j]!=nums[i]){
           i++;
           nums[i] = nums[j];
       }

   }
   return i+1;
}

这样才对。j要从0开始

0
0

MOCKINGT

2019-07-14

判断是否重复的条件错了

0
0

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

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

7408 学习 · 1150 问题

查看课程