原创 最長重複子數組(暴力/動態規劃/滑窗法)

給兩個整數數組 A 和 B ,返回兩個數組中公共的、長度最長的子數組的長度。 示例 1: 輸入: A: [1,2,3,2,1] B: [3,2,1,4,7] 輸出: 3 解釋: 長度最長的公共子數組是 [3, 2, 1]。 說明:    

原创 將有序數組轉換爲二叉搜索樹(二分+遞歸)

將一個按照升序排列的有序數組,轉換爲一棵高度平衡二叉搜索樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序數組: [-10,-3,0,5,9], 一個可能的答案是:[0,-

原创 最長有效括號(棧)

給定一個只包含 '(' 和 ')' 的字符串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串爲 "()" 示例 2: 輸入: ")()())" 輸出: 4 解釋: 最長有效括號子

原创 不同路徑 II(dfs+記憶化)

 一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記爲“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記爲“Finish”)。 現在考慮網格中有障礙物。那麼從左上角到右下角將

原创 有序矩陣中第K小的元素(通俗解法)

給定一個 n x n 矩陣,其中每行和每列元素均按升序排序,找到矩陣中第 k 小的元素。 請注意,它是排序後的第 k 小元素,而不是第 k 個不同的元素。   示例: matrix = [    [ 1,  5,  9],    [10,

原创 通配符匹配(動態規劃)

給定一個字符串 (s) 和一個字符模式 (p) ,實現一個支持 '?' 和 '*' 的通配符匹配。 '?' 可以匹配任何單個字符。 '*' 可以匹配任意字符串(包括空字符串)。 兩個字符串完全匹配纔算匹配成功。 說明:     s 可能爲

原创 路徑總和(先序遍歷)

給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定如下二叉樹,以及目標和 sum = 22,               5  

原创 用兩個棧實現隊列(隊列)

用兩個棧實現一個隊列。隊列的聲明如下,請實現它的兩個函數 appendTail 和 deleteHead ,分別完成在隊列尾部插入整數和在隊列頭部刪除整數的功能。(若隊列中沒有元素,deleteHead 操作返回 -1 )   示例 1:

原创 長度最小的子數組(暴力/動態規劃)

給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組,並返回其長度。如果不存在符合條件的連續子數組,返回 0。 示例: 輸入: s = 7, nums = [2,3,1,2,4,3] 輸

原创 缺失的第一個正數(桶排序)

給你一個未排序的整數數組,請你找出其中沒有出現的最小的正整數。   示例 1: 輸入: [1,2,0] 輸出: 3 示例 2: 輸入: [3,4,-1,1] 輸出: 2 示例 3: 輸入: [7,8,9,11,12] 輸出: 1   提示

原创 單詞拆分(暴力/回溯)

給定一個非空字符串 s 和一個包含非空單詞列表的字典 wordDict,判定 s 是否可以被空格拆分爲一個或多個在字典中出現的單詞。 說明:     拆分時可以重複使用字典中的單詞。     你可以假設字典中沒有重複的單詞。 示例 1:

原创 最接近的三數之和(回溯)

給定一個包括 n 個整數的數組 nums 和 一個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。   示例: 輸入:nums = [-1,2,1,-

原创 01揹包問題(dfs/DP)

描述 一個旅行者有一個最多能裝 M 公斤的揹包,現在有 n 件物品,它們的重量分別是W1,W2,...,Wn,它們的價值分別爲C1,C2,...,Cn,求旅行者能獲得最大總價值。 格式 輸入格式 第一行:兩個整數,M(揹包容量,M≤200

原创 踩方格(動規遞推)

描述 有一個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設: a、每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上; b、走過的格子立即塌陷無法再走第二次; c、只能向北、東、西三個方向走; 請問:如果允許在方格矩陣上走n步,共有多

原创 1057 數零壹 (20分)

給定一串長度不超過 10​5​​ 的字符串,本題要求你將其中所有英文字母的序號(字母 a-z 對應序號 1-26,不分大小寫)相加,得到整數 N,然後再分析一下 N 的二進制表示中有多少 0、多少 1。例如給定字符串 PAT (Basic