給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:
必須在原陣列上操作,不能拷貝額外的陣列。
儘量減少操作次數。
思路:
使用兩個陣列,將原陣列的不為0的資料依次儲存在新的陣列中,後面補0即可。
這裡要求在原陣列上操作,就用兩個指標來實現,也就是常說的快慢指標。
乙個是遍歷陣列的索引i快指標,指向下乙個是否要移動的值。 乙個是滿指標index,指向下乙個要替換的值。
陣列值不為0,就將nums[i]的值放到nums[index]處。
void movezeroes(vector& nums)
}//後面全為0
for(int i = index; i < vecsize; ++i)
}
LeetCode283 移動零(簡單)
原題目給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。題目大意 將陣列所有的零移至末尾,且不改變其他數字的順序,且只能開闢常數級...
Leetcode刷題283 移動零
方法1 把陣列中j個非零元素存放在陣列的前j項,之後把後邊的元素設定為0即可,如下 class solution def movezeroes self,nums list int none do not return anything,modify nums in place instead.j ...
LeetCode第283題 移動零
給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0 1,0 3,12 輸出 1 3,12 0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。解法一 使用氣泡排序的方法將所有0移動到後面。emps 解法二 遍歷兩次陣列,第...