若不能精通數據結構與算法,路只會越走越窄,也很難擺脫碼農的身份。咱們不能一直是個碼農。git
最大的障礙並非基礎與出身,而是自我設限,固步自封,請永遠不要放棄掙扎。忘記年齡,歸零心態,你一直能夠的。github
題號·題目 | 題目描述 | 解法&思路 |
---|---|---|
1-兩數之和 | 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那兩個整數,並返回他們的數組下標。你能夠假設每種輸入只會對應一個答案。可是,你不能重複利用這個數組中一樣的元素。 | 參考 |
2-兩數相加 | 給出兩個非空的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式存儲的,而且它們的每一個節點只能存儲一位數字。若是,咱們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。您能夠假設除了數字 0 以外,這兩個數都不會以 0 開頭。 | 參考 |
3-無重複字符的最長子串 | 給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。 | 參考 |
4-尋找兩個有序數組的中位數 | 給定兩個大小爲 m 和 n 的有序數組 nums1 和 nums2。請你找出這兩個有序數組的中位數,而且要求算法的時間複雜度爲 O(log(m + n))。你能夠假設 nums1 和 nums2 不會同時爲空。 | 參考 |
204-計數質數 | 統計全部小於非負整數 n 的質數的數量。 | 參考 |
344-反轉字符串 | 編寫一個函數,其做用是將輸入的字符串反轉過來。輸入字符串以字符數組 char[] 的形式給出。不要給另外的數組分配額外的空間,你必須原地修改輸入數組、使用 O(1) 的額外空間解決這一問題。你能夠假設數組中的全部字符都是 ASCII 碼錶中的可打印字符。 | 參考 |
387-字符串中的第一個惟一字符 | 給定一個字符串,找到它的第一個不重複的字符,並返回它的索引。若是不存在,則返回 -1。例: s = "leetcode",返回 0,s = "loveleetcode",返回 2。注意:您能夠假定該字符串只包含小寫字母。 | 參考 |
509-斐波那契數 | 斐波那契數,一般用 F(n) 表示,造成的序列稱爲斐波那契數列。該數列由 0 和 1 開始,後面的每一項數字都是前面兩項數字的和。也就是:F(0) = 0, F(1) = 1, F(N) = F(N - 1) + F(N - 2)。其中 N > 1, 給定 N,計算 F(N)。 | 參考 |
704-二分查找 | 給定一個 n 個元素有序的(升序)整型數組 nums 和一個目標值 target,寫一個函數搜索 nums 中的 target,若是目標值存在返回下標,不然返回 -1。 | 參考 |
912-排序數組 | 給定一個整數數組 nums,將該數組升序排列。 | 參考 |
每一題的解法都會盡量包含多種解題思路,還會挑一部分經典的算法,從時間複雜度與空間複雜度以及穩定性方面來對比不一樣解法的性能。算法
每日隨機更新一題,優先更新熱門算法,題庫刷完爲止。算法主要使用C語言實現,這要求咱們能本身手寫一些經常使用的數據結構,好比哈希表等,這樣能夠加深咱們對數據結構的理解。數組
感謝 Lisanaaa 等算法大佬的 算法專欄 和答疑解惑。數據結構