原创 判定字符是否唯一 -- 位運算

0x01.問題 實現一個算法,確定一個字符串 s 的所有字符是否全都不同。 《程序員面試金典》01.02 0x02.簡要分析 這是一個簡單的問題,解決的辦法比較多,比如雙循環呀,利用C++的STL呀,或者使用各種標誌容器記錄呀

原创 算法從入門到放棄系列--合集(建議收藏)--持續更新中

程序=數據結構+算法 不管你專攻於哪方面,作爲一個程序員,算法都是一個最基本的素養,無論是在平時的解決需求,處理bug,還是筆試,面試中,都顯得格外重要,所以,快快練就一身好算法吧。 現在,讓我們一起康康有趣的算法吧! 0x

原创 MySQL實現排名

0x01.需求 編寫一個 SQL 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名(Rank)相同。請注意,平分後的下一個名次應該是下一個連續的整數值。換句話說,名次之間不應該有“間隔”。 +----+-------+ | I

原创 使數組唯一的最小增量--數學思維的運用

0x01.問題 給定整數數組 A,每次 move 操作將會選擇任意 A[i],並將其遞增 1。 返回使 A 中的每個值都是唯一的最少操作次數。 輸入示例:[3,2,1,2,1,7] 輸出示例:6 解釋:經過 6 次 move 操

原创 C++_priority_queue(優先隊列)

0x01.說明 priority_queue是STL所提供的一個非常有效的容器。 優先隊列包含在頭文件 <queue> 中。 優先隊列由二項隊列編寫而成的。 查找最大值最小值的效率爲O(log N)。 和 queue 不同的就

原创 合併兩個有序鏈表--鏈表的遞歸處理

0x01.問題 將兩個有序鏈表合併爲一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 輸入示例:1->2->4, 1->3->4 輸出示例:1->1->2->3->4->4 C++結構體爲: /**

原创 鏈表的中間結點--快慢指針思想

0x01.問題 給定一個帶有頭結點 head 的非空單鏈表,返回鏈表的中間結點。 如果有兩個中間結點,則返回第二個中間結點。 給定鏈表的結點數介於 1 和 100 之間。 C++結構體說明: /** * Definition

原创 1~n整數中1出現的次數--最高效率的解法

0x01.問題 輸入一個整數 n ,求1~n這n個整數的十進制表示中1出現的次數。 例如,輸入12,1~12這些整數中包含1 的數字有1、10、11和12,1一共出現了5次。 1 <= n < 2^31 C++函數形式:

原创 刪除鏈表的倒數第N個節點--啞節點和雙指針

0x01.問題 給定一個鏈表,刪除鏈表的倒數第 n 個節點,並且返回鏈表的頭結點。 給定的 n 保證是有效的。 C++結構體: /** * Definition for singly-linked list. * stru

原创 最大公約數--巧妙的一行代碼

常見的求法是for循環窮舉,但其實可以使用輾轉相除法與遞歸結合!!! 一行代碼的求法:(結果是可能爲1的) int gcd(int x, int y) { return x == 0 ? y : gcd(y%x, x);

原创 拼寫單詞--仿造哈希表的思想

0x01.問題 給你一份『詞彙表』(字符串數組) words 和一張『字母表』(字符串) chars。 假如你可以用 chars 中的『字母』(字符)拼寫出 words 中的某個『單詞』(字符串),那麼我們就認爲你掌握了這個單詞。 注意

原创 逃離大迷宮--不斷思考的BFS

0x01.問題 在一個 10^6 x 10^6 的網格中,每個網格塊的座標爲 (x, y),其中 0 <= x, y < 10^6。 我們從源方格 source 開始出發,意圖趕往目標方格 target。每次移動,我們都可以走到網格中在

原创 島嶼的最大面積--DFS(附搜索全家桶)

0x01.問題 給定一個包含了一些 0 和 1的非空二維數組 grid , 一個 島嶼 是由四個方向 (水平或垂直) 的 1 (代表土地) 構成的組合。你可以假設二維矩陣的四個邊緣都被水包圍着。 找到給定的二維數組中最大的島嶼面積。(如

原创 零錢兌換問題--探索動態規劃的基本思想

0x01.問題 給定不同面額的硬幣 coins 和一個總金額 amount。編寫一個函數來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。 輸入示例:1 2 5 11 輸出示例:3  函

原创 最長上升子序列--從數學歸納到動態規劃

本文所有代碼採用C++ 0x01.問題 給定一個無序的整數數組,找到其中最長上升子序列的長度。 輸入示例:10 9 2 5 3 7 101 18  輸出示例:4 0x02.分析問題 這個題目看起來很簡單,其實問題比較複雜。 從