[算法学习] 移除元素

RoLingG 算法 2024-04-01

每日算法 | 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题也是,明明描述的整体去向都是向修改后的数组去表明,但最终却只检测最后数组的数量是否正确,有点为了出题而出题)

PREV
[算法学习] 删除有序数组中的重复项
NEXT
[算法学习] 删除排序链表中的重复元素

评论(0)

发布评论