Erlo

力扣题库第27题-移除元素

2025-03-04 22:29:10 发布   16 浏览  
页面报错/反馈
收藏 点赞

移除元素

题目详情:

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:

更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
返回 k。
用户评测:

评测机将使用以下代码测试您的解决方案:

int[] nums = [...]; // 输入数组
int val = ...; // 要移除的值
int[] expectedNums = [...]; // 长度正确的预期答案。
                            // 它以不等于 val 的值排序。

int k = removeElement(nums, val); // 调用你的实现

assert k == expectedNums.length;
sort(nums, 0, k); // 排序 nums 的前 k 个元素
for (int i = 0; i 

题目中说要原地操作,那么就不可以使用哈希表或者辅助数组等。下面介绍我的方法:
使用一个offset用来指示要存进数组的偏移,然后循环遍历每一个元素,如果元素不等于val,那么说明要存进当前offset指向的那个数组空间,存进去一个后记得要将offset加一。最后返回offset的值即可。

直接上代码:

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        if not nums:
            return 0
        offset: int = 0
        for i in range(len(nums)):
            if nums[i] != val:
                nums[offset] = nums[i]
                offset += 1
        return offset

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认