138. 隨機鏈表的複製 給你一個長度為n的鏈表,每個節點包含一個額外增加的隨機指針random,該指針可以指向鏈表中的任何節點或空節點。 構造這個鏈表的深拷貝。深拷貝應該正好由n個全新節點組成,其中每個新節點的值都設為其對應的原節點的值。新節點的next指針和random指針也都應指向複製鏈表中的新節點,並使原鏈表和複製鏈表中的這些指針能夠表示相同的鏈表狀態。複製鏈
136. 只出現一次的數字 給你一個非空整數數組nums,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。 你必須設計並實現線性時間複雜度的算法來解決此問題,且該算法只使用常量額外空間。 示例 1 : 輸入:nums = [2,2,1] 輸出:1 示例 2 : 輸入:nums = [4,1,2,1,
132. 分割回文串 II 給你一個字符串s,請你將s分割成一些子串,使每個子串都是迴文串。 返回符合要求的最少分割次數。 示例 1: 輸入:s = "aab" 輸出:1 解釋:只需一次分割就可將 s 分割成 ["aa","b"] 這樣兩個迴文子串。 示例 2: 輸入:s = "a" 輸出:0
130. 被圍繞的區域 給你一個m x n的矩陣board,由若干字符'X'和'O'組成,捕獲所有被圍繞的區域: 連接:一個單元格與水平或垂直方向上相鄰的單元格連接。 區域:連接所有'O'的單元格來形成一個區域。 圍繞:如果您可以用'X'單元格連接這個區域,並且區域中沒有任何單元格位於board邊緣,則該區域被'X'單元格圍繞。
128. 最長連續序列 給定一個未排序的整數數組nums,找出數字連續的最長序列(不要求序列元素在原數組中連續)的長度。 請你設計並實現時間複雜度為O(n)的算法解決此問題。 示例 1: 輸入:nums = [100,4,200,1,3,2] 輸出:4 解釋:最長數字連續序列是 [1, 2, 3, 4]。它的長度為 4。 示
118. 楊輝三角 給定一個非負整數numRows,生成「楊輝三角」的前numRows行。 在「楊輝三角」中,每個數是它左上方和右上方的數的和。 示例 1: 輸入: numRows = 5 輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例2: 輸入: n
94. 二叉樹的中序遍歷 給定一個二叉樹的根節點root,返回它的中序遍歷。 示例 1: 輸入:root = [1,null,2,3] 輸出:[1,3,2] 示例 2: 輸入:root = [] 輸出:[] 示例 3: 輸入:root = [1] 輸出:[1]
90. 子集 II 給你一個整數數組nums,其中可能包含重複元素,請你返回該數組所有可能的子集(冪集)。 解集不能包含重複的子集。返回的解集中,子集可以按任意順序排列。 示例 1: 輸入:nums = [1,2,2] 輸出:[[],[1],[1,2],[1,2,2],[2],[2,2]] 示例 2: 輸入:
85. 最大矩形 給定一個僅包含0和1、大小為rows x cols的二維二進制矩陣,找出只包含1的最大矩形,並返回其面積。 示例 1: 輸入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1"
77. 組合 給定兩個整數n和k,返回範圍[1, n]中所有可能的k個數的組合。 你可以按任何順序返回答案。 示例 1: 輸入:n = 4, k = 2 輸出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例 2:
76. 最小覆蓋子串 給你一個字符串s、一個字符串t。返回s中涵蓋t所有字符的最小子串。如果s中不存在涵蓋t所有字符的子串,則返回空字符串""。 注意: 對於t中重複字符,我們尋找的子字符串中該字符數量必須不少於t中該字符數量。 如果s中存在這樣的子串,我們保證它是唯一的答案。 示例 1: 輸入:s
75. 顏色分類 給定一個包含紅色、白色和藍色、共n個元素的數組nums,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。 我們使用整數0、1和2分別表示紅色、白色和藍色。 必須在不使用庫內置的 sort 函數的情況下解決這個問題。 示例 1: 輸入:nums = [2,0,2,1,1,0] 輸出:[0,
74. 搜索二維矩陣 給你一個滿足下述兩條屬性的m x n整數矩陣: 每行中的整數從左到右按非嚴格遞增順序排列。 每行的第一個整數大於前一行的最後一個整數。 給你一個整數target,如果target在矩陣中,返回true;否則,返回false。 示例 1: 輸入:matrix = [[1,3,5,
70. 爬樓梯 假設你正在爬樓梯。需要n階你才能到達樓頂。 每次你可以爬1或2個台階。你有多少種不同的方法可以爬到樓頂呢? 示例 1: 輸入:n = 2 輸出:2 解釋:有兩種方法可以爬到樓頂。 1. 1 階 + 1 階 2. 2 階 示例 2: 輸入:n = 3 輸出:3 解釋:有三種方法可以爬到樓頂。 1
68. 文本左右對齊 給定一個單詞數組words和一個長度maxWidth,重新排版單詞,使其成為每行恰好有maxWidth個字符,且左右兩端對齊的文本。 你應該使用 “貪心算法” 來放置給定的單詞;也就是説,儘可能多地往每行中放置單詞。必要時可用空格' '填充,使得每行恰好有maxWidth個字符。 要求儘可能均勻分配單詞間的空格數量。如果某一行單詞間的空格不