栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992835.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号