283. 移动零

作者: 雇个城管打天下 | 来源:发表于2018-07-12 16:12 被阅读6次

    题目

    题目

    分析

    其实题目本身并不难,主要是他要求必须在原数组上进行操作,不能拷贝额外的数组。
    这里用到了双指针法,快指针遍历,遇到0不动,遇到非0,则和慢指针交换,慢指针+1。

    代码

    public class Main {
        public static void main(String[] args) {
            Main main = new Main();
            int[] nums = {0, 1, 0, 3, 12};
            main.moveZeroes(nums);
            for (int x : nums) {
                System.out.println(x);
            }
        }
    
        public void moveZeroes(int[] nums) {
            int index = 0;
            for (int i = index; i < nums.length; i++) {
                if (nums[i] != 0) {
                    swap(nums, i, index);
                    index++;
                }
            }
        }
    
        public void swap(int[] nums, int i, int index) {
            int tmp = 0;
            tmp = nums[i];
            nums[i] = nums[index];
            nums[index] = tmp;
        }
    }
    

    相关文章

      网友评论

        本文标题:283. 移动零

        本文链接:https://www.haomeiwen.com/subject/qadrpftx.html