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: You must do this in-place without making a copy of the array. Minimize the total number of operations.
题目可以在O(n)时间复杂度内求解
算法步骤:
使用两个"指针"x和y,初始令y = 0
利用x遍历数组nums:
若nums[x]非0,则交换nums[x]与nums[y],并令y+1
public class Solution {
public void moveZeroes(int[] nums) {
int fast=0;
int slow=0;
while(fast<nums.length){
if(nums[fast]!=0){
int temp=nums[slow];
nums[slow]=nums[fast];
nums[fast]=temp;
slow++;
}
fast++;
}
}
}
原文:http://www.cnblogs.com/incrediblechangshuo/p/5668866.html