LeetCode第27题removeElement代码输出异常问题求助
关于LeetCode第27题removeElement的判题逻辑问题
首先明确LeetCode第27题的核心规则:
- 题目要求移除数组中所有等于指定值
val的元素,最终返回移除后数组的新长度 - 平台判题时,只会校验你返回的长度
k对应的数组前k个元素是否符合预期,数组后面的元素是什么完全不影响判题结果
你的情况属于对判题规则不熟悉:
- 你打印整个数组看到的
01304000是数组的全部内容,但平台显示的[0,1,3]是取了你返回的长度对应的前3个元素——这是完全正常的,不是代码有问题,也不是数组复制不被支持 - 你尝试用ArrayList、修改循环长度等操作,其实没必要纠结数组后面的内容,只要保证前
k个元素是正确的,并且返回正确的k值即可
给你一个标准的双指针解法示例:
public int removeElement(int[] nums, int val) { int k = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] != val) { nums[k++] = nums[i]; } } return k; }
这个解法里,我们用k记录有效元素的位置,遍历数组时把不等于val的元素放到数组的前k位,最后返回k。平台会自动取数组前k个元素校验,后面的元素不管是什么都不会影响判题结果。
内容的提问来源于stack exchange,提问作者user21064334
相关产品推荐
相关产品推荐

