【Java】移除元素

简介: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

🎈练习题入口🎈

🔒问题描述

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

541f5afebadd33d1118d25fa8ac53aa1_23158ff0bc624b118a2bc1b38b9f6499.png

🔑解题分析

       本题需要原地删除跟 val 值相等的元素。如果我们按照 顺序表 的思想,遍历数组,找到符合条件的元素就删除,并且把后面的元素全部都往前提,遍历多次结束。

    如果按上述方法做的话,就浪费时间了!

       为了节省时间,我将采用双指针的形式来做这道题,如下图

如果sign指向位置的元素不等于 val那就把 sign 位置上的元素赋值给 record 位置上的元素,record++,sign++。

 因为前三个元素都不等于 val ,我们也可以看做他们什么也没干,直到 sign 指向位置元素等于val

 当 sign 指向位置元素等于 val 时,record 就保持不动,sign 继续前进直到所指向元素不满足条件,这时赋值的效果就显现出来了。之后两个指针向后移动,一直赋值就实现原地删除元素效果啦

 

因为是先赋值然后 record++,所以最后 record 的值就等于数组的长度,所以我们可以直接返回record

🔓代码实现

class Solution {
    public int removeElement(int[] nums, int val) {
        int n = nums.length;
        int sign = 0;
        int record = 0;
        for(; sign < n;sign++){
            if(nums[sign]!=val){
                nums[record] = nums[sign];
                record++;
            }
        }
        return record;
    }
相关文章
|
1月前
|
存储 Java 程序员
Java判断列表中元素的唯一性
Java判断列表中元素的唯一性
|
1月前
|
算法 Java
[Java·算法·简单] LeetCode 27. 移除元素 详细解读
[Java·算法·简单] LeetCode 27. 移除元素 详细解读
23 1
|
1月前
|
Java
【Java每日一题】——第十六题:将数组元素逆序并遍历输出。
【Java每日一题】——第十六题:将数组元素逆序并遍历输出。
30 0
|
12天前
|
人工智能 Java
Java练习题-输出二维数组对角线元素和
Java练习题-输出二维数组对角线元素和
19 1
|
1月前
|
存储 Java
Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断
Java中相加两个数字可通过简单赋值实现,如`int sum = x + y;`。若要用户输入数字相加,可使用`Scanner`类读取。计算单词数,可使用`split()`方法或`StringTokenizer`类。反转字符串,可用`for`循环或`StringBuilder`的`reverse()`方法。计算数组元素总和,可遍历数组累加。矩形面积通过长度乘以宽度得出。判断奇偶性,利用模2运算或位运算检查最低位。更多内容,可关注微信公众号`Let us Coding`。
49 0
|
28天前
|
Java
java实现向有序数组中插入一个元素
java实现向有序数组中插入一个元素
8 0
|
30天前
|
Java
java中判断数组中元素出现的次数
java中判断数组中元素出现的次数
9 0
|
30天前
|
Java
java向数组中插入元素
java向数组中插入元素
9 0
|
1月前
|
Java
JAVA——List中剔除空元素(null)的三种方法汇总
JAVA——List中剔除空元素(null)的三种方法汇总
|
1月前
|
Java 索引
【Java每日一题】— —第十八题:求二维数组中的元素最小值及其索引。
【Java每日一题】— —第十八题:求二维数组中的元素最小值及其索引。
32 0