【发布时间】:2020-10-30 05:35:31
【问题描述】:
我正在尝试解决一个 leetcode 问题:
给定一个数组 nums,编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。 例子: 输入:[0,1,0,3,12] 输出:[1,3,12,0,0]
而且我认为我有正确的解决方案,但我只是不确定为什么我得到它不正确。
class Solution {
public void moveZeroes(int[] nums) {
for (int i = 0; i > nums.length;i++) {
int j= i;
while ((j<nums.length) && (nums[j]==0)){
j++;
}
if (j<nums.length){
nums[i]=nums[j];
nums[j]=0;
}
}
}
}
【问题讨论】:
-
i > nums.length在 for 循环中。这使得永远不会执行 for 循环。应该是i < nums.length -
试试
0,1,0,0,0,3,12这样的案例 -
这是一个分区问题,你可以尝试一个通用的分区解决方案,这可能会使代码更简洁,例如:stackoverflow.com/a/46958064/5698534
标签: java arrays sorting indexing