前言
此刻停留,这是不变的数组。
此刻编辑,这是独一无二的数组。
删除每一个重复的元素,让数组和元素变得独一无二!
此篇内容以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[]数组是否一致
解题代码
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; } }