[LeetCode]移除元素(Remove Element)

news/2024/7/4 1:46:56 标签: 数据结构与算法

题目描述

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:

给定 nums = [3,2,2,3], val = 3,
函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。
你不需要考虑数组中超出新长度后面的元素。

示例 2:

给定 nums = [0,1,2,2,3,0,4,2], val = 2,
函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
注意这五个元素可为任意顺序。
你不需要考虑数组中超出新长度后面的元素。

说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {
    print(nums[i]);
}

解决方法

使用2个索引len,i,其中len用来复制,i用来检查是否移除元素
nums[i] != val时,说明这时不需要移除元素,将其复制到nums[len]

    public int removeElement(int[] nums, int val) {
        if (nums == null || nums.length == 0)
            return 0;

        int len = 0;

        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != val)
                nums[len++] = nums[i];
        }

        return len;
    }

本文首发:https://lierabbit.cn/2018/09/...


http://www.niftyadmin.cn/n/929239.html

相关文章

php审计-Day1==配置环境

跟着xx牛学习php审计&#xff0c;按一步一个脚印&#xff0c;做好笔录免下一阶段走弯路&#xff1b; 声明一点&#xff1a;作者写的文&#xff0c;都不是临时赶出来的&#xff0c;最迟也是第二天花时间写的。 我们审计的工具是seay开源的工具&#xff0c;&#xff0c; 这里用的…

实验吧-杂项-pilot-logic、ROT-13变身了

1、pilot-logic 题上说password藏在文件里&#xff0c;直接丢到Winhex里&#xff0c;搜索pass就拿到flag了。 有的大佬提供了另一种方法&#xff0c;题上说是一个磁盘文件&#xff0c;有一个处理磁盘文件的软件autopsy&#xff0c;不过这个软件有点大(超过500M)&#xff0c;可以…

php.ini三大危险变量审计--

第一个特性: safe_mode 在php 5.4.x之前的版本是没关的&#xff0c;&#xff0c;这里按xx牛的意思做个演示&#xff0c;咱们怎么利用&#xff1f; 1.首先我们新建一个cmdcmdcmd_GET[‘cmd’];//获取系统cmd变量 然后放到web根目录下&#xff0c;执行 ppp.php?cmdipconfig 然…

理解操作系统之进程和线程

在操作系统中&#xff0c;设定了进程和线程的概念去描述程序并发执行逻辑。本文属于研究进程和线程的入门级文章。 主要从以下五个方面介绍进程以及线程的相关概念。 进程和线程的定义操作系统中对进程和线程的描述进程的多层调度进程/线程之间的同步机制进程/线程之间的通信机…

Mysql 密码修改

方法1&#xff1a; 用SET PASSWORD命令 首先登录MySQL。 格式&#xff1a;mysql> set password for 用户名localhost password(新密码); 例子&#xff1a;mysql> set password for rootlocalhost password(123); 方法2&#xff1a;用mysqladmin 格式&#…

php审计中的超全局变量

$_POST $_GET $GLOBALS $_REQUEST $_SERVER $_FILES $_COOKIE $_SESSION 这里$_COOKIE 和_SESSION直接做个演示。 <?php session_start(); //登录&#xff0c;某文件会给变量配一个值&#xff0c;我们伪造123 //如果123$_SESSION内的值&#xff0c;那么我们就能绕过一部分…

25、【支付模块开发】——将配置好的支付宝沙箱环境集成到我们的项目中以及支付接口的编写...

1、将支付宝Demo中的相关文件复制到我们的项目中&#xff1a; 首先&#xff0c;我们将Demo中src中的包及里面的文件复制到我们项目中 image.png同样&#xff0c;我们也要讲zhifubao.properties这个配置文件方法我们项目中的 resources目录下&#xff1a;image.png加下来就是我们…

php审计-最经典的_GET[‘id‘]和POST[‘id‘]注入

这里&#xff0c;_GET[‘id’]和_POST[‘id’]很多人都知道&#xff0c;&#xff0c; 但我们做php审计&#xff0c;后面的宽字节注入和二次注入都会和mysql交互&#xff0c;那审计这两段源码就非常重要。 这里建个php,放到www下面, GET型 如果下面不带前端源码&#xff0c;写成…