原创 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)模式呢? 對於跨越多字節的對象,我們必須建立兩個原則: 對象的地址是什麼 ? 幾乎在所有的機器上面,多字節對象都被存儲爲連續的字節序列,對象的地址爲所使用