領扣(LeetCode)移動零 個人題解

2022-09-03 09:33:12 字數 754 閱讀 2048

給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。

示例:

輸入:[0,1,0,3,12]輸出:[1,3,12,0,0]
說明:

必須在原陣列上操作,不能拷貝額外的陣列。

儘量減少操作次數。

比較暴力的做法,就是依次判斷是否為0,如果是0,用後面的數迴圈蓋掉前面的數,然後在最末尾補0。就這樣直到迴圈結束。不過這裡要注意到迴圈結束的條件,未處理的陣列內容是在縮短的,處理過的內容(也就是放在末尾的0)不需要重新處理。

**如下:

1

class

solution

12 nums[nums.length-1]=0;

13 i--;

14 len--;15}

16}17}

18 }

同時網友題解也給出了比較聰明的做法。就是快慢指標。快針遍歷,遇到非0,就讓慢針指向的位置置為那個值,如果是0,則跳過。最後把缺的地方補全0。這樣減少了陣列本身的移動次數,有效提高了**執行效率

**如下:

1

class

solution

10while(j11 nums[j++]=0;12}

13 }

領扣(LeetCode)轉置矩陣 個人題解

給定乙個矩陣a,返回a的轉置矩陣。矩陣的轉置是指將矩陣的主對角線翻轉,交換矩陣的行索引與列索引。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,4,7 2,5,8 3,6,9 示例 2 輸入 1,2,3 4,5,6 輸出 1,4 2,5 3,6 1 a.length 1000 1 a ...

領扣(LeetCode)錯誤的集合 個人題解

集合s包含從1到n的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複。給定乙個陣列nums代表了集合s發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式返回。示例 1 輸入 nu...

LeetCode 陣列 移動零

給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。計數字 當前位置前0的個數n 陣列依次向前n位 餘下補0 class solution...