[LeetCode 283] Move Zeroes

来源:互联网 发布:ps for mac破解版 编辑:程序博客网 时间:2024/06/10 08:28

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function,nums should be [1, 3, 12, 0, 0].

Note:

  1. You must do this in-place without making a copy of the array.
  2. Minimize the total number of operations.

solution:

two pointers, one point to first zero element, second point to following first non-zero element.

public class Solution {    public void moveZeroes(int[] nums) {        if(nums.length<=1) return;        int first = 0;        int sec = 0;        while(sec<nums.length) {            //find first zero element            while(first<nums.length && nums[first] !=0) {                first++;            }            if(first == nums.length) return;            sec = first+1;            //find following first non-zero element            while(sec<nums.length && nums[sec] == 0){                sec++;            }            if(sec == nums.length) return;            swap(nums, first, sec);        }    }    public void swap(int[] nums, int i, int j) {        int temp = nums[i];        nums[i] = nums[j];        nums[j] = temp;    }}



0 0
原创粉丝点击