283. 移動零
阿新 • • 發佈:2020-11-19
給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
//1.雙指標 class Solution { public void moveZeroes(int[] nums) { int i=0,j=0; //雙指標從頭開始遍歷 j負責尋找不為0的數 while(j<nums.length){ if(nums[j]!=0){ //每當nums[j]!=0時,調換 int temp = nums[j]; nums[j] = nums[i]; nums[i] = temp; i++; //調換之後 i再往後走 } j++; //nums[j]=0繼續向後找不為0的數 } } } //2.迴圈遍歷,把非0的數找到後,放到陣列前面,不改變原先順序,再找到為0時的下標,後面即都為0 class Solution { public void moveZeroes(int[] nums) { int count = 0; //記錄非0數有多少個 for(int i=0;i<nums.length;i++){ if(nums[i]!=0){ nums[count] = nums[i]; count++; } } for(int j=count;j<nums.length;j++){ nums[j]=0; } } }