标签:
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