Leetcode 02——删除有序数组重复项(Java)

前言

此刻停留,这是不变的数组。

此刻编辑,这是独一无二的数组。

删除每一个重复的元素,让数组和元素变得独一无二!

此篇内容以nums数组元素{1,1,2},长度3为解题举例说明,尤其看代码时也可以将此代入阅读代码


题目和解析


题目解析

我们的目标就是返回一个数组长度,这个数组长度是通过删除原数组相同元素之后得到的。

比如:本来的数组长度是3,里面元素有 {1,1,2},题目要求我们删除相同元素保留一个即可,那么我们删除之后的数组就变成{1,2},新长度为2

这个2就是我们要返回的值。


温馨提示:或许你会纠结于断言是啥玩意。

解释一下:assert为断言函数,它的功能是,他后面的条件语句结果必须为true,它才会让程序继续执行接下来的语句!


解读一下判题标准:

①定义一个整型数组nums,作为原数组。

   再一定一个整型数组expectNums,作为修改元素后的数组。

  比如nums元素{1,1,2}长度为3,那么expectNums元素{1,2}长度为2。

②题目给我们定义的类是public int removeDuplicates(int[] nums){}

 这里用变量k接收结果(即我们的目标返回值)。

注意,我们调用这个类的时候就改变了原数组的值和长度了,然后和expectNums数组进行比较

③断言一次,只有当k等于expectNums数组长度时继续执行接下来的程序

④进入for循环,看一下修改后nums[]数组和expectNums[]数组是否一致


解题代码

class Solution {
    public int removeDuplicates(int[] nums) {
        int n = nums.length;   //接收原数组nums的长度给n
        if (n == 0) {          //判断数组长度是否为0
            return 0;
        }
        int fast = 1, slow = 1;
        while (fast < n) {   //1<3
            if (nums[fast] != nums[fast - 1]) { //当nums[fast]不等于nums[fast-1]时进入if
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Perfectkn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值