原创 【程序員面試金典】面試題62. 圓圈中最後剩下的數字(模運算)

1. 題目 2. 思路 最優子問題: n 個數時,第一個刪除的數的位置應當是 m%n (從零開始) 設 n-1 時,最後剩餘的數的位置爲 x (從零開始) n 個數時,刪除第一個數後,剩餘 n-1 個數,並從 m%n 開始進行

原创 LeetCode刷題: 【365】水壺問題(關於遊戲型問題可以使用系統搜索)

題目 思路 一、回溯法(或者分支限界) 在任意一個時刻,我們可以且僅可以採取以下幾種操作: 把 X 壺的水灌進 Y 壺,直至灌滿或倒空; 把 Y 壺的水灌進 X 壺,直至灌滿或倒空; 把 X 壺灌滿; 把 Y 壺灌滿; 把 X 壺

原创 LeetCode刷題: 【409】 最長迴文串

1. 題目 2. 思路 字符計數 偶數必然可用於構成迴文 奇數只需-1,即可構成迴文 在有奇數的情況下,最後需要+1 [aabbcaabb] 3. 代碼 class Solution { public: int long

原创 【線性代數】第五章 特徵值與特徵向量

線性代數 思維導圖

原创 【劍指Offer】面試題40. 最小的k個數(c++ 優先隊列 [priority_queue] / 第n大元素線性時間選擇 [nth_element])

題目 解法一:選擇排序 (前n) O(n * k) class Solution { public: vector<int> getLeastNumbers(vector<int>& arr, int k) {

原创 LeetCode刷題: 【1160】 拼寫單詞(c++語法相關:map遍歷、for標籤)

1. 題目 2. 解題思路 計數即可 3. 代碼 class Solution { public: int countCharacters(vector<string>& words, string chars) {

原创 【程序員面試金典】面試題 01.06. 字符串壓縮(c++字符串拼接)

題目 解題思路 話說c++的字符串拼接真麻煩,話說+=和java中一樣的StringBuffer嗎?? c++拼接字符串效率比較(+=、append、stringstream、sprintf) 代碼 class Solution

原创 LeetCode刷題: 【169】多數元素(摩爾投票法)

1. 題目 給定一個大小爲 n 的數組,找到其中的多數元素。多數元素是指在數組中出現次數大於 ⌊ n/2 ⌋ 的元素。 你可以假設數組是非空的,並且給定的數組總是存在多數元素。 來源:力扣(LeetCode) 鏈接:https:

原创 LeetCode刷題: 【300】 最長上升子序列(動態規劃 / 貪心算法)

1. 題目 2. 解法(動態規劃) 2.1 解題思路 比暴力法(使用回溯法遍歷所有子序列,判定嚴格上升序列,並取最大值,時間複雜度O(n*2^n))好,動態規劃,分別計算以每個元素結束的上升子序列長度,需要向前遍歷尋找最長上升子

原创 LeetCode刷題: 【543】二叉樹的直徑(迭代:深度優先搜索)

1. 題目 2. 解題思路 使用深度優先搜索,在回退時記錄當前結點左右子樹深度之和作爲可能的最大直徑, 並計算以當前結點爲根節點的樹的深度,爲父結點計算提供數據 計算所有結點的左右子樹深度,其和最大的即爲最大直徑 3. 代碼 /

原创 LeetCode刷題: 【322】零錢兌換(動態規劃)

1. 題目 給定不同面額的硬幣 coins 和一個總金額 amount。編寫一個函數來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。 來源:力扣(LeetCode) 鏈接:https:/

原创 【LeetCode 第 21 場雙週賽】5336. 上升下降字符串

1. 題目 2. 代碼 class Solution { public: string sortString(string s) { char map[26] = {0}; int s

原创 【劍指Offer】面試題59 - II. 隊列的最大值

題目 https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/ 解題思路 使用一個雙向鏈表輔助,保存最大值序列 Note:鏈表中小於後插入的元素的元素,對結果沒有影響

原创 【劍指offer】面試題57 - II. 和爲s的連續正數序列

1. 題目 輸入一個正整數 target ,輸出所有和爲 target 的連續正整數序列(至少含有兩個數)。 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。 題目鏈接 2. 解題思路 滑動窗口啦 3. 代碼 clas