LeetCode筆記 陣列(2)

2021-08-25 19:46:38 字數 802 閱讀 4833

給定乙個排序好的陣列,在原始陣列中刪除掉重複的元素,使得每個元素只出現一次,返回最終陣列的長度。問題記錄:

1.sorted!sorted!sorted!重要的事情說三遍!審題一定要認真,拿到題目忽略了這個條件,浪費了大部分時間在這上面。其實題目給的陣列都是排序好的,也就是說,重複的元素都是在相鄰位置上的,這樣降低了難度。這也提供了一種思路:假如題目給的是亂序的,那麼可以先進行排序操作來降低難度。

2.做這題的時候發現了關於for迴圈的重要知識(不知道理解的對不對),就是for迴圈的每次操作是在for語句之後進行的,也就是說,即使for in range()中的量已經改變,也是按最初的那個量去執行。如下圖,因為隨著迴圈進行,nums已經改變了長度,但是for語句中的nums仍然是最開始的長度,沒有隨之改變。這個原因導致之後的過程中i, j變數與新的len(nums)不匹配。

3.最後仍然是參考別人的思路(汗顏),發現while語句和for不同,while語句中的變數會隨著迴圈操作的改變而改變。以此題為例,nums在迴圈中長度變短,因此while語句的len(nums)也會隨之變小,這樣思路就非常清晰了。

leetcode刷題筆記 陣列2

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。這道題主體思想是雜湊對映。python的字典就使用了hash的思想。直接貼 class solution def majorityelement s...

LeetCode筆記 陣列(4)

給定乙個32位的有符號整數,實現數字反轉。這道題用的是字串反轉的方法,但是用整數求餘的方法可能會方便許多。思路大致如下 將整數轉化成字串,再用 0 0 1 的切片方法進行反序,最後再將反序後的字串轉換成整數。其中,要考慮兩個問題。一是整數末尾有0,應將其轉換成字串之後把末尾的0去掉。二是當整數是負數...

leetcode刷題筆記 陣列3

給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列 現至少兩次,函式返回 true。如果陣列中每個元素都不相同,則返回 false。這裡的解答用到了投機取巧的一種方法,使用set函式 class solution def containsduplicate self,nums list int...