原创 Sum-s問題
聲明: 本文只討論:若存在多個滿足要求的結果,只返回任一結果即可 的情況; 若需返回滿足要求的所有結果,稍加改進即可,本文不做討論; 1 兩數 已知 一個整形無序數組 numsnumsnums; 一個整數 sss; 查找其
原创 LeetCode 911. Online Election
1 描述 Description In an election, the i-th vote was cast for persons[i] at time times[i]. Now, we would like to imp
原创 LeetCode 877. Stone Game
題目 解題思路 標籤: 動態規劃; 定義: stones:石頭所代表分數的數組; n:數組長度; score[i, j]:當剩下石頭爲stones[i], …, stones[j]時,當前玩家能的到的最高分數; sum[i
原创 最小棧實現
談到最小棧實現: 大多數人肯定都知道 空間複雜度O(n)O(n)O(n)、時間複雜度O(1)O(1)O(1) 的實現方法; 但卻有較少人瞭解 空間、時間複雜度均爲O(1)O(1)O(1) 的方法; 偶然看到,感覺挺好,記錄下;
原创 LeetCode 1140. Stone Game II
題目 思路 標籤: 動態規劃 定義: stones:與題目中 piles 意思保持一致; n:stone個數; score[i, j]:當前玩家從 stones[i] 開始,且 M = j 時,該玩家所能得到的最高分數;
原创 C static 關鍵字
文章目錄聲明static 修飾變量static 修飾函數引發的一些關於頭文件的思考 聲明 爲了便於描述,做如下聲明: 如果說的是C static關鍵字,我們只談static修飾變量 和 函數即可; 如果說的是C++ static
原创 i++(++i)不是原子操作
什麼是操作系統的原子操作 原子操作是不可分割的,在執行完畢前不會被任何其它任務或事件中斷: 在單線程中, 能夠在單條指令中完成的操作都可以認爲是 原子操作,不能在單條指令中完成的操作也都可以認爲不是原子操作,因爲中斷可以且只能發
原创 Visual Studio 2019卸載不乾淨
作案動機 Vs 卸載不乾淨,會導致重新安裝失敗,使得我們不得不依靠萬能辦法“重裝系統”來解決,是一個讓人頭疼的問題; 只嘗試2019專業版,Vs重新安裝成功了,其它版本就不只道了; 這裏簡單記錄下卸載過程; 步驟 1、正常卸載
原创 extern 和 extern "C"
兩者關係 表面上看extern 和 extern "C"差別不大,後者只比前者多了一個 “C” 而已;但實際上兩者的用途差了十萬八千里; extern extern 是用來進行外部聲明的。 當我們需要使用在其它文件中定義的全局變
原创 LeetCode 226. Invert Binary Tree
題目 代碼 void mirror(TreeNode* root){ if(!root) return; swap(root->left, root->right); mirror(roo
原创 鏈表反轉
無論是單鏈表反轉還是雙鏈表反轉,統一使用“三指針”(three pointers)法; 單鏈表反轉 ListNode* reverse(ListNode* head){ ListNode* pre = nullptr;
原创 LeetCode 143. Reorder List
題目 思路 步驟: 先找到鏈表最終間的節點; 然後將後半部分鏈表反轉; 最後將前半部分鏈表和反轉後的後半部分鏈表合併; ps:很好的一道鏈表題,強烈推薦,考察了: 如何查找終見節點; 鏈表反轉; 鏈表合併; 代碼 Lis
原创 const
重點: const意味着什麼?意味着常數?不不不,火藥的應用不僅限於製造鞭炮,const意味着 “ 保護 ”,保護數據在傳輸過程中不被修改; const可以預防意外變動,提高程序的健壯性,所以 能用就用(use const wh
原创 override
當我們打算在派生類中對基類的某個虛函數進行重寫時,可能由於疏忽(參數類型、參數個數、返回值類型不匹配等原因),導致重寫 “變質” 成了重定義,與我們想要的效果失之毫釐,差之千里,這種錯誤很難發現;爲了避免這種錯誤的發生引入了ove
原创 大端、小端模式
爲什麼會有大端(Big-endian)、小端(Little-endian)模式呢? 對於跨越多字節的對象,我們必須建立兩個原則: 對象的地址是什麼 ? 幾乎在所有的機器上面,多字節對象都被存儲爲連續的字節序列,對象的地址爲所使用