前言
与数组的爱恨情仇,还有很长一段时间。
在Java中,它是一种引用数据类型,底层又类似与数据结构中顺序表。
数组看似很重要,但确实很重要~
一篇好文,今天带你干掉数组中不要的元素!
题目及解析
题目的目标已经告诉你了,让你返回整改后数组的长度。比如原数组{1,1,2,2},val =2;
我们要把原数组中等于2的“全干掉”,新的数组长度就是2了,然后返回就是我们需要的答案。
注意:这里的全干掉我打了引号,我会在下面的解读第③点中为你解释~
这里我们解读一下说明里面的内容:
①int 一个变量len 接收我们通过代码执行之后的新数组长度(比如上面的例子中返回了2)
②for循环,从0开始打印到我们返回的长度-1为止,就是得到的新数组
③最重要的来了:我们不需要把原来的数组中数值等于val的元素全部干掉,可以把这些元素弄到后面,比如{2,1,1,2};val = 2; 可以把数组改成{1,1,2,2},只要返回的长度是2不再是4就行。(我的解法中没有使用到此条,仅作为一个思路)
这题相对比较简单,比如我们很容易想到把原数组的长度给一个变量,然后一个for循环,遍历一下数组看哪个元素等于val,难的地方就是找到等于val的元素了,接下来怎么操作
代码
classSolution { publicintremoveElement(int[] nums, intval) { intn=nums.length; if(n==0){ return0; } for(inti=0;i<n;++i){ if(nums[i] ==val){ //找到数组元素等于val的了,进入for循环for(intj=i;j<n-1;++j){ //这里就要从我们找到的位置开始nums[j] =nums[j+1]; //后面的数组元素覆盖前面的数组元素 } --i; --n; //数组长度减1 } } returnn; } }