每日算法 | 27.移除元素
例题:[27.移除元素]()https://leetcode.cn/problems/remove-element/description/?envType=featured-list&envId=59jEaTgw?envType=featured-list&envId=59jEaTgw
题目描述:
给你一个数组
nums
和一个值val
,你需要 原地 移除所有数值等于val
的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用
O(1)
额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
和26题一样,本题使用的是双指针解决,代码:
class Solution {
public int removeElement(int[] nums, int val) {
if (nums.length == 0) {
return 0;
}
int f = 0, s = 0;
while(f < nums.length) {
if (nums[f] != val) {
nums[s] = nums[f];
s++;
}
f++;
}
return s++;
}
}
另外,这一题并没有说要检测修改后的数组是否正确,所以一样降低了难度,简单但是更简单了一些。(yysy我觉得这题目描述有点问题,包括26题也是,明明描述的整体去向都是向修改后的数组去表明,但最终却只检测最后数组的数量是否正确,有点为了出题而出题)
评论(0)