1. 程式人生 > 其它 >leetcode刷題 移動零

leetcode刷題 移動零

技術標籤:leetcode刷題

這道題的難點就在於不構建新的儲存空間,直接原地進行移動,因此想到了採用雙指標方法,其中一個指標總是指向0,一個指標總是指向非0,然後交換他們的位置。

class Solution {
    public void moveZeroes(int[] nums) {
    	if(nums.length==0) {
    		return;
    	}
    	int zeroPointer = 0,noZeroPointer = 0;
    	while(zeroPointer < nums.length) {
    		if(nums[zeroPointer]!=0) {
    			zeroPointer++;
    		}
    		else {
    			noZeroPointer = zeroPointer;
    			while(nums[noZeroPointer]==0 && noZeroPointer < nums.length) {
    				if(noZeroPointer == nums.length -1 && nums[noZeroPointer] == 0)
    					return;
    				noZeroPointer++;
    			}
    			nums[zeroPointer] = nums[noZeroPointer];
    			nums[noZeroPointer] = 0;
    		}
    	}
    }
}