LeetCode精彩解答(一)

2021-10-03 16:36:33 字數 1863 閱讀 8093

發現自己在刷了一部分題以後,對之前的題的記憶度不是很高,尤其是在看到別人精彩**的時候,總是在當時誇讚,而事後忘記的低效率。特此決定把一些自己的想法和別人的精彩**、題解收集在一起,以便學習。

就從我個人的刷題順序來吧,從簡單的開始。

題目:給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

注:你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。(不能有相同)

方法:雜湊表

public

int[

]twosum

(int

numbers,

int target)

map.

put(numbers[i]

, i);}

return result;

}

時間複雜度:o(n)

題目:給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。

最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。

你可以假設除了整數 0 之外,這個整數不會以零開頭。

;}//跳出for迴圈,說明數字全部是9

int[

] temp =

newint

[digits.length +1]

; temp[0]

=1;return temp;

}}解釋:巧妙之處為,在陣列的最後一位向前迴圈遍歷(即從數字的個位向高位遍歷判斷);如果當前的數字不是9,那麼直接讓當前的數字加一返回即可;如果當前的數字是9,那麼把當前的數字置為0,再判斷向前乙個高位。最後如果跳出迴圈還沒有返回,說明陣列中的數字全為9,那麼新開闢乙個length+1的陣列,然後把陣列的首位(即數字的最高位)置0即可。題目:假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是乙個正整數。

方法一:動態規劃

public

class

solution

int[

] dp =

newint

[n +1]

; dp[1]

=1; dp[2]

=2;for

(int i =

3; i <= n; i++

)return dp[n];}

}

時間複雜度:o(n)

解釋:個人覺得有點像反向遞迴。遞迴是從最終一步一步向之前找答案,而這個就是從前向後一步一步推答案。

方法二:迴圈

public

intclimbstairs

(int n)

時間有限,之後再慢慢更新吧。如果其中有錯誤希望及時提出。

不能錯過的SEO精彩解答

問 我的站 在 seo 方面,1.程式方面需要做什麼優化!我的站不是div的 用table做的 2.使用了無副檔名的重寫技術 答 要採用div css,用table很不利於排名。無副檔名重寫,可以的。問 那麼程式方面需要做什麼優化?比如編碼 答 編碼,都可以的。問 這樣會影響收錄還是怎麼?答 收錄和...

LeetCode演算法題解答

leetcode演算法題解答 第四題 尋找兩個有序陣列的中位數 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。def findmedianso...

LeetCode 數學 解答技巧總結

int reverse int x x 10 return r 在網上看到別人的答案,感覺非常精妙。首先,此解答無需判斷整數的正負,正負數進行加減乘除取餘操作結果都一樣,其次,判斷是否溢位也非常簡單,因為輸入是整數,所以溢位只可能出現在最後一位需要反轉的數字加上去之後,也就是對原整數最高為進行反轉之...