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