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