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

简介: Leetcode经典讲解,删除有序数组的重复项。一篇好文让你会做!

前言

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

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

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

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


题目和解析

图片.png


题目解析

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

比如:本来的数组长度是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[]数组是否一致



解题代码

classSolution {
publicintremoveDuplicates(int[] nums) {
intn=nums.length;   //接收原数组nums的长度给nif (n==0) {          //判断数组长度是否为0return0;
        }
intfast=1, slow=1;
while (fast<n) {   //1<3if (nums[fast] !=nums[fast-1]) { //当nums[fast]不等于nums[fast-1]时进入ifnums[slow] =nums[fast];
++slow;
            }
++fast;
        }
returnslow;
    }
}
目录
相关文章
|
2月前
leetCode(删除有序数组中的重复项)
如何在不使用额外空间的情况下,通过双指针法原地删除有序数组中的重复项。
38 2
|
4月前
|
存储 Java API
LeetCode------合并两个有序数组(4)【数组】
这篇文章介绍了LeetCode上的"合并两个有序数组"问题,并提供了三种解法:第一种是使用Java的Arrays.sort()方法直接对合并后的数组进行排序;第二种是使用辅助数组和双指针技术进行合并;第三种则是从后向前的双指针方法,避免了使用额外的辅助数组。
LeetCode------合并两个有序数组(4)【数组】
|
2月前
【LeetCode-每日一题】 删除排序数组中的重复项
【LeetCode-每日一题】 删除排序数组中的重复项
24 4
|
2月前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
43 0
|
2月前
|
算法 Java
LeetCode(一)Java
LeetCode(一)Java
|
4月前
|
算法
LeetCode第26题删除有序数组中的重复项
这篇文章介绍了LeetCode第26题"删除有序数组中的重复项"的解题方法,通过使用双指针技巧,高效地去除数组中的相邻重复元素。
LeetCode第26题删除有序数组中的重复项
|
4月前
|
算法
LeetCode第80题删除有序数组中的重复项 II
文章介绍了LeetCode第80题"删除有序数组中的重复项 II"的解法,利用双指针技术在O(1)空间复杂度内原地删除重复元素,并总结了双指针技术在处理有序数组问题中的应用。
LeetCode第80题删除有序数组中的重复项 II
|
4月前
|
存储 Java API
|
4月前
|
算法
LeetCode第88题合并两个有序数组
文章分享了LeetCode第88题"合并两个有序数组"的解法,通过从后向前的合并策略避免了数组元素的前移,使用三个指针高效地完成了合并过程。
|
4月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
76 2