發現自己在刷了一部分題以後,對之前的題的記憶度不是很高,尤其是在看到別人精彩**的時候,總是在當時誇讚,而事後忘記的低效率。特此決定把一些自己的想法和別人的精彩**、題解收集在一起,以便學習。
就從我個人的刷題順序來吧,從簡單的開始。
題目:給定乙個整數陣列 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 在網上看到別人的答案,感覺非常精妙。首先,此解答無需判斷整數的正負,正負數進行加減乘除取餘操作結果都一樣,其次,判斷是否溢位也非常簡單,因為輸入是整數,所以溢位只可能出現在最後一位需要反轉的數字加上去之後,也就是對原整數最高為進行反轉之...