原创 leetcode 945使數組唯一的最小增量

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

原创 leetcode 1160 拼寫單詞

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

原创 leetcode 382 鏈表隨機節點 蓄水池採樣

如何從n個數中等概率的取出k個數?(n是不確定的或者確定的) 概率爲k/n 蓄水池抽樣:先將前k個數取出來放入結果集中,然後從第k+1個數開始遍歷。假設遍歷到第i個數,以k/i的概率去第i個數去替換掉蓄水池中的某個元素。 init

原创 主定理求解遞歸式

主定理求解遞歸式

原创 leetcode 94二叉樹的中序遍歷

中序遍歷:左–根--右 利用棧 struct Command{ public: string s;//"go" "print" TreeNode* node; Command(string s, T

原创 leetcode 300最長上升子序列

動態規劃 class Solution { public: int lengthOfLIS(vector<int>& nums) { int n = nums.size(); if(n ==

原创 leetcode 只出現一次的數字

leetcode 136只出現一次的數字I 給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。 異或操作: 交換律:a ^ b ^ c <=> a ^ c ^ b 任何數於0異

原创 leetcode 1071字符串的最大公因子

對於字符串 S 和 T,只有在 S = T + … + T(T 與自身連接 1 次或多次)時,我們才認定 “T 能除盡 S”。 返回最長字符串 X,要求滿足 X 能除盡 str1 且 X 能除盡 str2。 輸入:str1 = "

原创 美團2020後臺校招題目--美團騎手包裹區間分組

2110年美團外賣火星第3000號配送站點有26名騎手,分別以大寫字母A-Z命名,因此可以稱呼這些騎手爲黃家騎士特工A,黃家騎士特工B…黃家騎士特工Z,某美團黑珍珠餐廳的外賣流水線上會順序產出一組包裹,美團配送調度引擎已經將包裹分

原创 並查集

並查集主要是爲了解決圖的動態連通性的問題,主要需要實現union、find的操作,基本的C++實現如下: class UnionFind{ private: int count; //記錄連通分量的個數 v

原创 劍指offer--正則表達式匹配

'.'表示任意一個字符 '*'表示前一個字符出現任意多次 考慮最優策略的最後一步,p的最後一個字符,1)是’.’ 或者 s[i-1] == p[j-1] 2)是’*’——>忽略*和不忽略*兩種處理方式 狀態:dp[i][j]代表

原创 劍指offer--位操作

leetcode 476 數字的補數 class Solution { public: int findComplement(int num) { bool flag = false; //

原创 劍指offer--二叉搜索樹的最近公共祖先

二叉樹的最近公共祖先 p和q的位置關係:p和q分居root兩側;p和q在root的左側或者右側。先遇到誰就返回誰。 class Solution { public: TreeNode* lowestCommonAncest

原创 劍指offer--二叉樹的最大深度和最小深度

二叉樹的最大深度:從根節點到最遠葉子節點的最長路徑上的節點數。 二叉樹的最小深度:從根節點到最近葉子節點的最短路徑上的節點數量。 //遞歸 class Solution { public: int maxDepth(Tre

原创 劍指offer--鏈表中倒數第K個節點

輸入一個鏈表,輸出該鏈表中倒數第k個節點。爲了符合大多數人的習慣,本題從1開始計數,即鏈表的尾節點是倒數第1個節點。例如,一個鏈表有6個節點,從頭節點開始,它們的值依次是1、2、3、4、5、6。這個鏈表的倒數第3個節點是值爲4的節