用Java删除有序数组重复项

我的解决方案

因为我刚开始接触Java,对于其功能并不熟悉,想到的第一个解决方法是
通过前后对比 的方式进行判断,
不相同就赋值到新的节点上

 class Solution {
        public int removeDuplicates(int[] nums) {
            int j=0;
            for(int i=1;i<nums.length;i++){
                if (nums[i]==nums[i-1]) {
                    continue;
                }else{
                    j++;
                    nums[j]=nums[i];
                }
            }
            return j+1;
        }
    }

在这里插入图片描述

因为刚用Java写,所以错了几次,不过问题不大,最后还是通过了.还不错

官方解决方案

既然是学习那么还是要看一下别人怎么写的,一题多解是不错的学习方法
来看看官方的代码

class Solution {
    public int removeDuplicates(int[] nums) {
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        int fast = 1, slow = 1;
        while (fast < n) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
}

作者:LeetCode-Solution
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/solution/shan-chu-pai-xu-shu-zu-zhong-de-zhong-fu-tudo/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在这里插入图片描述

感觉出奇的相似,因为他多命名了一个lenth变量所以空间上要多消耗一点,但我的代码也有点问题,每次循环都要调用一次lenth函数,这样就比较消耗cpu了,但是为什么我的代码时间上也是100%,有点疑惑,可能是用例太少的缘故吧,感觉他的代码更科学.

大佬解决方案

还有这位大神想法挺不错的,
在这里插入图片描述
可是什么就是编译不通过呢,想不通,还是个精选解答
在这里插入图片描述
我按照这位大哥的思想自己写了一下,终于通过了

class Solution {
        public int removeDuplicates(int[] nums) {
            int j=0;
            for(int i=1;i<nums.length;i++){
                
                if (nums[j]==nums[i]) {
                    continue;
                }else{
                    j++;
                    nums[j]=nums[i];
                }
            }
            return j+1;
        }
    }

在这里插入图片描述

总结

经过不同的解答方法看来,这个题就主要是对比与赋值,值得注意的是如何开始与结束,不要漏掉用例,也不要有未判断的数据混(最后一个)进去就行了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值