leetcode刷題 移動零
阿新 • • 發佈:2020-12-29
技術標籤: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; } } } }