原创 C/C++高精度時間及其延時

文章目錄1. 寫在前面2. 高精度時間結構體和函數3. 高精度延時4. 測試代碼5. 寫在後面參考資料 1. 寫在前面 在分析算法的性能時,我們通過算法的時間複雜度可以從理論上分析出算法的大致高階,但是當我們想具體比較一下算法真正

原创 線程池,生產者消費者模型,死鎖模型,內存池知識總結

文章目錄1. 寫在前面2. 多線程和內存管理等相關知識2.1 線程池2.2 生產者-消費者模型2.3 死鎖模型2.4 條件變量和互斥鎖2.4.1 條件變量2.4.2 互斥鎖2.5 內存池2.6 C++11 thread用法寫在後面

原创 函數指針和函數指針數組用法及其類型打印

寫在前面 本篇博客主要介紹函數指針的用法,並設計程序驗證函數名取地址,解引用等的異同。 函數指針 先看一段驗證程序: #include <iostream> #include <typeinfo> void print(void

原创 LeetCode分割字符串+迴文題小結(回溯剪枝、深度優先搜索+記憶數組)

131. 分割回文串 給定一個字符串 s,將 s 分割成一些子串,使每個子串都是迴文串。 返回 s 所有可能的分割方案。 原題鏈接 解題思路: 本題解題的方法是回溯剪枝解法,解題的形式這裏給出兩種,即截取子串組合[參考博客題139

原创 [LeetCode] 384. 打亂數組(洗牌算法)

384. 打亂數組 打亂一個沒有重複元素的數組。 示例: // 以數字集合 1, 2 和 3 初始化數組。 int[] nums = {1,2,3}; Solution solution = new Solution(nums)

原创 LeetCode 單詞拆分題小結

139. 單詞拆分 給定一個非空字符串 s 和一個包含非空單詞列表的字典 wordDict,判定 s 是否可以被空格拆分爲一個或多個在字典中出現的單詞。 原題鏈接 解題思路: 此題應該是典型的動態規劃解題,定義dp[len]表示前

原创 [LeetCode] 124. 二叉樹中的最大路徑和(深度優先遍歷+記憶數組)

124. 二叉樹中的最大路徑和 給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義爲一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3]

原创 [LeetCode] LeetCode中柱形圖、矩形等題小結(單調棧)

文章目錄84. 柱狀圖中最大的矩形85. 最大矩形寫在後面參考資料 84. 柱狀圖中最大的矩形 題目鏈接 解題思路: 這裏提供兩種解題思路,即直接解題,和單調棧解題。 直接解題,觀察下圖,6能覆蓋5出現的情況,而5不能覆蓋6的情

原创 [LeetCode] 115. 不同的子序列(動態規劃)

115. 不同的子序列(動態規劃) 給定一個字符串 S 和一個字符串 T,計算在 S 的子序列中 T 出現的個數。 一個字符串的一個子序列是指,通過刪除一些(也可以不刪除)字符且不干擾剩餘字符相對位置所組成的新字符串。(例如,“A

原创 [LeetCode] 42. 接雨水(單調棧)

42. 接雨水 給定 n 個非負整數表示每個寬度爲 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。 上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位

原创 [LeetCode] 206. 反轉鏈表(迭代、遞歸、鏈表)

206. 反轉鏈表 反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 進階: 你可以迭代或遞歸地反轉鏈表。你能否用兩種方法解決這道題? 解題思路: 此題雖然

原创 [LeetCode] 146. LRU緩存機制(設計題)

146. LRU緩存機制 運用你所掌握的數據結構,設計和實現一個 LRU (最近最少使用) 緩存機制。它應該支持以下操作: 獲取數據 get和 寫入數據 put 。 獲取數據get(key) - 如果關鍵字 (key) 存在於緩

原创 [LeetCode] 1431. 擁有最多糖果的孩子(數組)

1431. 擁有最多糖果的孩子 給你一個數組 candies 和一個整數 extraCandies ,其中 candies[i] 代表第 i 個孩子擁有的糖果數目。 對每一個孩子,檢查是否存在一種方案,將額外的 extraCand

原创 [工具]安裝指定版本的cmake

實際開發中,我們可能需要指定版本的cmake編譯鏈接工程代碼,cmake安裝有兩種,第一種是apt方式安裝源中已有的版本,但是此方法很難指定特定版本cmake,第二種是源碼安裝。 1.apt方式安裝 $ sudo apt-get

原创 [LeetCode] 25. K 個一組翻轉鏈表(鏈表)

25. K 個一組翻轉鏈表 給你一個鏈表,每 k 個節點一組進行翻轉,請你返回翻轉後的鏈表。 k 是一個正整數,它的值小於或等於鏈表的長度。 如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。 解題思路: 解鏈