我正在尝试解决 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;
}
}
}
}
最佳答案
你可以用一个指针来解决这个问题 O(N)。这会通过:
public class Solution {
public static void moveZeroes(int[] nums) {
if (nums == null || nums.length == 0)
return;
int pos = 0;
for (int num : nums)
if (num != 0)
nums[pos++] = num;
while (pos < nums.length)
nums[pos++] = 0;
}
}
引用文献
关于java - 重新排列数组中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62817985/