移除元素
今日的题目依旧是力扣面试经典算法150题中数组相关的题目:移除元素
题目描述
给定一个排序数组 nums 和一个值 val,需要在原地移除数组中所有等于val 的元素,并返回移除后数组的新长度。不需要考虑超出新长度以外的元素。
- 注意:
- 必须在原地修改输入数组,不能使用额外的数组空间。
- 元素的顺序可以改变,你不需要考虑数组中超出新长度后面的元素。
- 示例:
- 输入:
nums= [3,2,2,3],val= 3 - 输出:
新长度为 2,数组变为 [2,2](注意:返回值为新长度,数组内容可以不是连续的)
- 输入:
- 解释:
- 数组
nums中的值 3 被移除了两次。 - 移除后的新数组长度为 2,数组内容为 [2,2]。
- 数组
题目分析
题目要求我们在不使用额外空间的情况下,移除数组中的特定元素,并返回移除后的数组长度。
为了达到 O(1) 的额外空间复杂度,这要求我们需要在原地修改数组。
解题思路
题目的要求就两个,一个移出元素,一个将不同的元素放到原本的数组中。这就意味着我们需要在一个循环中进行两种操作,这里很容易就会想到用双指针来完成,一个指针拿出元素比较,一个指针将元素放入数组,并且这个指针最后停留的下标就是最后一个不同的元素。
实际算法代码
根据以上分析和思路,我们可以写出以下代码:
import java.util.Arrays;
/**
* description
*
* @author 明月望秋思
* @date 2024/8/6
*/
public class RemoveElement {
/**
* 移除数组中的指定元素
*
* @param nums 输入数组
* @param val 需要移除的值
* @return 移除后的新数组长度
*/

最低0.47元/天 解锁文章
1709

被折叠的 条评论
为什么被折叠?



