LeetCode283 移動零(簡單)

2021-09-25 06:39:20 字數 877 閱讀 7699

原題目

給定乙個陣列 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...