You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode第27题Remove Element本地正常但平台运行异常求助

问题原因分析

你的代码核心问题是没有完成题目要求的「原地修改原数组」操作:

  • 题目明确要求要将nums的前k位设为非val元素,但你的代码只是用List收集了所有非val元素、统计了数量k,完全没对输入的nums数组做任何修改。
  • 在VS测试时你可能直接输出了List的内容,所以看起来结果正确;但LeetCode平台会检查你传入的nums数组本身的前k个元素,原数组没被修改,自然返回错误的结果。
修正方案(原地修改实现)

用双指针法可以高效完成原地修改,不需要额外创建List:

public class Solution {
    public int RemoveElement(int[] nums, int val) {
        int slow = 0;
        for (int fast = 0; fast < nums.Length; fast++) {
            if (nums[fast] != val) {
                nums[slow] = nums[fast];
                slow++;
            }
        }
        return slow;
    }
}

代码说明

  • 慢指针slow:标记当前需要放置非val元素的位置
  • 快指针fast:遍历整个数组,寻找非val元素
  • 每次找到不等于val的元素,就把它赋值到slow指向的位置,然后slow向前移动一位
  • 最终slow的值就是非val元素的数量k,同时nums的前k位已经被替换成了所有非val元素

内容的提问来源于stack exchange,提问作者mageff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:53:26