java - 重新排列数组中的数字

标签 java arrays sorting indexing

我正在尝试解决 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; 
    }
}

引用文献

  • 有关更多详细信息,您可以参阅 Discussion Board 。有很多可接受的解决方案,具有各种 languages和解释,高效的算法,以及渐近time/space复杂性分析 1 , 2 在那里。

关于java - 重新排列数组中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62817985/

相关文章:

java - jsp中如何单引号

java - 关闭 Japplet 并不会结束 java 进程

python - 将 numpy int 数组转换为 bool 数组

c++ - 如何在C++中创建指针数组

sorting - mongoid排序问题

java - 连接到java中列表中的最后一个元素

c - For 循环未按预期工作

jquery - 按行中最后一个单元格的背景颜色对表格进行排序

javascript - 无法在格式为 dd/MM/yyyy HH :mm 的 javascript 中对日期时间进行排序

java - Java如何计算字体行间距? (计算 Times New Roman 中 2 行之间的间距)