首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于LeetCode中算法问题的问题--用Java从排序数组中删除重复项

关于LeetCode中算法问题的问题--用Java从排序数组中删除重复项
EN

Stack Overflow用户
提问于 2020-12-30 15:34:37
回答 3查看 64关注 0票数 0

我正在研究关于Leetcode的算法问题。但首先,我在自己的本地编译器上写了我的答案。在本地运行我的代码时,我可以得到这个问题的答案。但是当我将我的答案直接粘贴到leetcode的在线编译器中时,系统会提示我我的答案是错误的。无法匹配正确的答案。本地编译器的解决方案如下所示:

代码语言:javascript
复制
class Solution {
    public int removeDuplicates(int[] nums) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        ArrayList<Integer> arraylist = new ArrayList<Integer>();

        for (int i : nums) {
            list.add(i);
        }

        for (int num : list) {
            if (!arraylist.contains(num)) {
                arraylist.add(num);
            }
        }

        return arraylist.size();
    }
}

以及来自LeetCode:在这里输入图像描述的反馈

EN

回答 3

Stack Overflow用户

发布于 2020-12-30 15:53:22

一些评论说可以使用一个集合,但是任务是这样做而不需要任何额外的内存分配,最简单的解决方案是:

代码语言:javascript
复制
private static int removeDuplicates(int[] numbers) {
    int size = 0;
    for (int i = 0; i < numbers.length; i++) {
        if (i == 0 || numbers[i - 1] != numbers[i]) {
            numbers[size++] = numbers[i];
        }
    }
    return size;
}
票数 2
EN

Stack Overflow用户

发布于 2020-12-30 15:52:09

将索引设置为1,如果numsi与numsi +1不同,则增量指数为1。

代码语言:javascript
复制
class Solution {
    public int removeDuplicates(int[] nums) {
        
        int index = 1;
        
        for(int i = 0; i < nums.length - 1; i++){
            if(nums[i] != nums[i + 1]){
                nums[index++] = nums[i + 1];
            }
        }
        return index;
        
    }
}
票数 0
EN

Stack Overflow用户

发布于 2020-12-30 15:52:29

不要使用ListSetMap或诸如此类的东西。数据是排序的。用那个!

实际上,如果您只能返回一个[1, 1]值,那么您的输出如何是int。如何输出只有一个数字的列表/数组?

所以再读一遍挑战说明,第一句:

..。删除重复的就地.返回新的长度。

既然这是你的挑战,我不会写代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65509462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档