摘要:盡量減少操作次數。樣例如樣例所示,數組,移動完成后變成,下面來講解雙指針的做法。這樣我們就完成了元素的移動,同時也保持了非元素的相對順序。
給定一個數組 nums
,編寫一個函數將所有 0
移動到數組的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12]輸出: [1,3,12,0,0]
說明:
(雙指針) O ( n ) O(n) O(n)
給定一個數組 nums
,要求我們將所有的 0
移動到數組的末尾,同時保持非零元素的相對順序。
樣例:
如樣例所示,數組nums = [0,1,0,3,12]
,移動完成后變成nums = [1,3,12,0,0]
,下面來講解雙指針的做法。
我們定義兩個指針,i
指針和k
指針,i
指針用來遍歷整個nums
數組,k
指針用來放置nums
數組元素。然后將非0
元素按照原有的相對順序都放置到nums
數組前面,剩下的位置都置為0
。這樣我們就完成了0
元素的移動,同時也保持了非0
元素的相對順序。
具體過程如下:
i
和k
,初始化i = 0
,k = 0
。i
指針向后移動,遍整個nums
數組,如果 nums[i] != 0
,也就是說遇到了非0
元素,此時我們就將nums[i]
元素放置到nums[k]
位置,同時k++
后一位。k
位置之后的元素都賦值為0
。實現細節:
遍歷數組可以使用for(int x : nums)
,這樣就少定義一個指針,代碼也顯得更加簡潔。
時間復雜度分析: O ( n ) O(n) O(n) , n n n是數組的長度,每個位置只被遍歷一次。
時間復雜度分析: O ( 1 ) O(1) O(1) ,只需要常數的空間存放指針變量。
class Solution {public: void moveZeroes(vector<int>& nums) { int k = 0; for(int x : nums) if(x != 0) nums[k++] = x; while(k < nums.size()) nums[k++] = 0; }};
class Solution { public void moveZeroes(int[] nums) { int k = 0; for(int x : nums) if(x != 0) nums[k++] = x; while(k < nums.length) nums[k++] = 0; }}
原題鏈接: 283. 移動零
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/119014.html
摘要:題目鏈接題目分析給定一個整數數組,將值為的元素移動到數組末尾,而不改動其他元素出現的順序。再在去后的元素末尾填充到計算出的數組長度。最終代碼若覺得本文章對你有用,歡迎用愛發電資助。 D68 283. Move Zeroes 題目鏈接 283. Move Zeroes 題目分析 給定一個整數數組,將值為0的元素移動到數組末尾,而不改動其他元素出現的順序。 思路 計算總共有多少個元素。 再...
摘要:給定一個數組,編寫一個函數將所有移動到數組的末尾,同時保持非零元素的相對順序。盡量減少操作次數。換個思路,把非數字前移,不去管數字。這樣遍歷完之后,數組索引從到之間的數值即為所求得保持非零元素的相對順序,而之后的數值只需要全部賦值即可。 給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 Given an array nums, write ...
摘要:給定一個數組,編寫一個函數將所有移動到數組的末尾,同時保持非零元素的相對順序。盡量減少操作次數。換個思路,把非數字前移,不去管數字。這樣遍歷完之后,數組索引從到之間的數值即為所求得保持非零元素的相對順序,而之后的數值只需要全部賦值即可。 給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 Given an array nums, write ...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經到題,所以后面會調整自己,在刷算法與數據結構的同時,攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區別...
摘要:第五題對稱二叉樹難度簡單給定一個二叉樹,檢查它是否是鏡像對稱的。第十六題最大連續的個數難度簡單給定一個二進制數組,計算其中最大連續的個數。第十八題平方數之和難度簡單給定一個非負整數,你要判斷是否存在兩個整數和,使得。 寫在前面 最近忙著調教新裝備,沒有及時的寫題解,但是沒有在偷懶沒刷題喔~來認真整理下最近做的題目~ 之前考慮按tag來刷題,后來收到了推薦的leetcode題解,就根據上...
閱讀 848·2021-11-18 10:07
閱讀 2359·2021-10-14 09:42
閱讀 5348·2021-09-22 15:45
閱讀 594·2021-09-03 10:29
閱讀 3471·2021-08-31 14:28
閱讀 1881·2019-08-30 15:56
閱讀 3046·2019-08-30 15:54
閱讀 1002·2019-08-29 11:32