摘要:前言的復(fù)寫零給你一個長度固定的整數(shù)數(shù)組,請你將該數(shù)組中出現(xiàn)的每個零都復(fù)寫一遍,并將其余的元素向右平移。注意請不要在超過該數(shù)組長度的位置寫入元素。
前言
Weekly Contest 141的 復(fù)寫零:
解題思路給你一個長度固定的整數(shù)數(shù)組 arr,請你將該數(shù)組中出現(xiàn)的每個零都復(fù)寫一遍,并將其余的元素向右平移。
注意:請不要在超過該數(shù)組長度的位置寫入元素。
要求:請對輸入的數(shù)組 就地 進(jìn)行上述修改,不要從函數(shù)返回任何東西。
示例1:
輸入:[1,0,2,3,0,4,5,0] 輸出:null 解釋:調(diào)用函數(shù)后,輸入的數(shù)組將被修改為:[1,0,0,2,3,0,0,4]示例2:
輸入:[1,2,3] 輸出:null 解釋:調(diào)用函數(shù)后,輸入的數(shù)組將被修改為:[1,2,3]提示:
1 <= arr.length <= 10000
0 <= arr[i] <= 9
本題十分簡單,需要注意本題是一個原地算法,所以使用雙指針法進(jìn)行變量交換即可。大致邏輯如下:
遍歷數(shù)組元素
當(dāng)前元素為0時,下一個元素賦值為0,并對數(shù)組進(jìn)行左移,下一次遍歷當(dāng)前元素后2位的元素。否則正常遍歷數(shù)組。
實現(xiàn)代碼/** * 1089. 復(fù)寫零 * @param arr */ public void duplicateZeros(int[] arr) { for (int i = 0; i < arr.length - 1;) { if (arr[i] == 0) {// 當(dāng)前元素為0 // 記錄下一個元素的值 int next = arr[i + 1]; // 將下一個元素設(shè)為0 arr[i + 1] = 0; for (int j = i + 2; j < arr.length; j++) { // 從當(dāng)前索引后的第二個元素開始交換 int tmp = arr[j]; // 記錄當(dāng)前變量 arr[j] = next; // 將前一個位置的元素值賦給當(dāng)前元素 next = tmp; // next指針記錄當(dāng)前元素 } i+=2; // 下一次遍歷的是當(dāng)前元素后2位的元素 }else{ ++i; // 正常遍歷 } } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77775.html
前端LeetCode刷題 下面是已刷的題目的目錄。GitHub:https://github.com/cunzaizhuy...每日打卡更新中,歡迎關(guān)注。 數(shù)組類 26 刪除排序數(shù)組中的重復(fù)項 27 移除元素 35 搜索插入位置 66 加1 80 medium 刪除排序數(shù)組中的重復(fù)項2 88 合并兩個有序數(shù)組 167 兩數(shù)之和II - 輸入有序數(shù)組 118 楊輝三角 169 easy 求眾數(shù) 1...
摘要:譯者說于年月日發(fā)布,該版本正式支持的關(guān)鍵字,并且用舊版本編譯同樣可以使用這兩個關(guān)鍵字,這無疑是一種進(jìn)步。其次,這是最后一個支持和的版本了,在后續(xù)的版本了會移除對它們的兼容。本節(jié)最好直接在或者閱讀,以獲得更好的閱讀體驗格式支持。 譯者說 Tornado 4.3于2015年11月6日發(fā)布,該版本正式支持Python3.5的async/await關(guān)鍵字,并且用舊版本CPython編譯Torn...
閱讀 2036·2021-11-08 13:14
閱讀 2944·2021-10-18 13:34
閱讀 2032·2021-09-23 11:21
閱讀 3595·2019-08-30 15:54
閱讀 1763·2019-08-30 15:54
閱讀 2933·2019-08-29 15:33
閱讀 2588·2019-08-29 14:01
閱讀 1948·2019-08-29 13:52