国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

1089-復寫零

pinecone / 1256人閱讀

摘要:前言的復寫零給你一個長度固定的整數數組,請你將該數組中出現的每個零都復寫一遍,并將其余的元素向右平移。注意請不要在超過該數組長度的位置寫入元素。

前言

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

相關文章

  • 70道前端LeetCode題目集合及視頻講解(持續更新中...)

    前端LeetCode刷題 下面是已刷的題目的目錄。GitHub:https://github.com/cunzaizhuy...每日打卡更新中,歡迎關注。 數組類 26 刪除排序數組中的重復項 27 移除元素 35 搜索插入位置 66 加1 80 medium 刪除排序數組中的重復項2 88 合并兩個有序數組 167 兩數之和II - 輸入有序數組 118 楊輝三角 169 easy 求眾數 1...

    mayaohua 評論0 收藏0
  • Tornado 4.3文檔翻譯: web框架-RequestHandler和Application

    摘要:譯者說于年月日發布,該版本正式支持的關鍵字,并且用舊版本編譯同樣可以使用這兩個關鍵字,這無疑是一種進步。其次,這是最后一個支持和的版本了,在后續的版本了會移除對它們的兼容。本節最好直接在或者閱讀,以獲得更好的閱讀體驗格式支持。 譯者說 Tornado 4.3于2015年11月6日發布,該版本正式支持Python3.5的async/await關鍵字,并且用舊版本CPython編譯Torn...

    xiongzenghui 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<