Leetcode 03——移除元素(Java)

109 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情


前言

与数组的爱恨情仇,还有很长一段时间。

在Java中,它是一种引用数据类型,底层又类似与数据结构中顺序表。

数组看似很重要,但确实很重要~

一篇好文,今天带你干掉数组中不要的元素!


题目及解析

image.png *** ​

 题目的目标已经告诉你了,让你返回整改后数组的长度。比如原数组{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的元素了,接下来怎么操作。


代码

class Solution {
    public int removeElement(int[] nums, int val) {
            int n = nums.length;
            if(n==0){
                return 0;
            }
         for(int i=0;i<n;++i){
             if(nums[i] == val){   //找到数组元素等于val的了,进入for循环
                 for(int j = i;j < n-1;++j){ //这里就要从我们找到的位置开始
                       nums[j] = nums[j+1];  //后面的数组元素覆盖前面的数组元素
                    }
                    --i;   
                    --n;  //数组长度减1
                }
            }
            return n;
    }
}