原題目
給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例:輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:必須在原陣列上操作,不能拷貝額外的陣列。
儘量減少操作次數。
題目大意
將陣列所有的零移至末尾,且不改變其他數字的順序,且只能開闢常數級儲存空間
題目分析
方法一:用乙個指標s指向起始位置,將原陣列作為乙個新的儲存陣列,迴圈每次找到不為零的數就儲存在s的位置,讓s加1,當遍歷完所有的數後,將s的位置到陣列的最大長度的值賦值為零;
方法二:用乙個指標s指向起始位置,將原陣列作為乙個新的儲存陣列,迴圈每次找到不為零的數就與在s的位置的值交換
完整**
void
movezeroes
(int
* nums,
int numssize)
}for
(; zerocounts)}
執行用時 :
20 ms , 在所有 c 提交中擊敗了 90.91% 的使用者
記憶體消耗 :
8.8 mb , 在所有 c 提交中擊敗了 55.61% 的使用者
void
movezeroes
(int
* nums,
int numssize)
}}
執行用時 :
24 ms , 在所有 c 提交中擊敗了 68.60% 的使用者
記憶體消耗 :
8.8 mb , 在所有 c 提交中擊敗了 47.78% 的使用者 總結
無
leetcode 283 移動零 快慢指標
給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。思路雙指標法。這道題目相當經典,將所有 0 移動到陣列的末尾,分為兩步,第一是將...
leetcode 283 移動零,雙指標解法
題目描述 給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。public void movezeroes int nums 思路 ...
leetcode 283 移動零 單指標方法
題解是雙指標,但其實單指標就足夠了。每次遍歷把零元素存起來,這樣交換後交換的零元素也在後面,一次遍歷就可以結束。from collections import deque class solution def movezeroes self,nums list int none do not ret...