自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u013243296的博客

站在巨人的肩膀上

  • 博客(239)
  • 收藏
  • 关注

原创 416. 分割等和子集

给你一个 只包含正整数 的 非空 数组 nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。直观的解法是使用递归,一层层的查找,递归的优化是使用记忆化的方式存储中间结果。第二种方法是使用动态规划的方法。解释:数组可以分割成 [1, 5, 5] 和 [11]。解释:数组不能分割成两个元素和相等的子集。输入:nums = [1,5,11,5]输入:nums = [1,2,3,5]

2022-11-23 11:54:30 289 1

原创 238. 除自身以外数组的乘积

所以需要进行两次计算,第一次用于求左部分的乘积,第二次求右部分的乘积,同时再将最后的计算结果一起计算出来。给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。输入: nums = [-1,1,0,-3,3]输入: nums = [1,2,3,4]输出: [24,12,8,6]输出: [0,0,9,0,0]

2022-10-17 17:32:40 161

原创 36. 有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。只需要根据以上规则,验证已经填入的数字是否有效即可。一个有效的数独(部分已被填充)不一定是可解的。对行、列、九宫格分别进行判断,具体看代码。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。空白格用 ‘.’ 表示。

2022-10-10 09:54:52 187

原创 322. 零钱兑换

这里定义dp[i]表示金额为i的最少需要dp[i]个硬币个数可以表示金额i,那么,dp[i]= min(dp[i], dp[i - coin] + 1),子问题就是dp[i - coin],每次计算dp[i],就是计算当前dp[i]和它的子问题dp[i - coin] + 1的最小值,1表示可以从子问题的解中再从硬币数组中找到一个硬币,满足问题的解。输入:coins = [1, 2, 5], amount = 11。输入:coins = [1], amount = 0。解释:11 = 5 + 5 + 1。

2022-09-19 22:44:13 1222

原创 313. 超级丑数

解释:给定长度为 4 的质数数组 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32]。题目的意思是,后面的超级丑数是给定的primes数组中的数乘以前面的超级丑数得到的,使用动态规划解题。解释:1 不含质因数,因此它的所有质因数都在质数数组 primes = [2,3,5] 中。输入:n = 12, primes = [2,7,13,19]输入:n = 1, primes = [2,3,5]

2022-09-03 23:37:59 73

原创 309. 最佳买卖股票时机含冷冻期

设计一个算法计算出最大利润。给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格。解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。动态规划,设定状态和动态转移方程,具体看代码及注释。输入: prices = [1,2,3,0,2]输入: prices = [1]...

2022-08-30 11:55:27 226

原创 289. 生命游戏

借用卷积的思想解题,定义卷积核,为了方便边界元素解题,填充0,填充的大小根据题意确定,当前元素的周围8个位置,所以行列各自增加2行2列来填充0,正好可以用3*3的卷积核大小进行卷积,卷积核中间的元素是0,因为算当前的元素的8个位置,所以是0。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;...

2022-08-29 22:34:35 91

原创 284. 顶端迭代器

注意:每种语言可能有不同的构造函数和迭代器 Iterator,但均支持 int next() 和 boolean hasNext() 函数。请你在设计一个迭代器,在集成现有迭代器拥有的 hasNext 和 next 操作的基础上,还额外支持 peek 操作。// 返回 1 ,指针移动到下一个元素 [1,2,3]// 返回 2 ,指针移动到下一个元素 [1,2,3]// 返回 3 ,指针移动到下一个元素 [1,2,3]int next() 返回数组中的下一个元素,并将指针移动到下个元素处。...

2022-08-29 10:47:25 179

原创 275. H 指数 II

h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。题目已经排序,则使用倒序遍历,当citations[i] > h,则说明找到了一篇被引用了至少 h+1 次的论文。解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 0, 1, 3, 5, 6 次。...

2022-08-28 15:19:27 66

原创 274. H 指数

根据维基百科上 h 指数的定义:h 代表“高引用次数”,一名科研人员的 h指数是指他(她)的 (n 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。计算并返回该研究者的 h 指数。由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。输入:citations = [3,0,6,1,5]输入:citations = [1,3,1]...

2022-08-28 15:02:31 64

原创 204. 计数质数

埃氏筛的定义:要得到自然数 n 以内的全部质数,必须把不大于 根号n 的所有质数的倍数剔除,剩下的就是质数。解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7。给定整数 n ,返回 所有小于非负整数 n 的质数的数量。...

2022-08-28 11:23:17 139

原创 200. 岛屿数量

目标是找到矩阵中 “岛屿的数量” ,上下左右相连的 1 都被认为是连续岛屿。深度优先搜索dfs方法: 设目前指针指向一个岛屿中的某一点。给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。grid[i][j] 的值为 ‘0’ 或 ‘1’此外,你可以假设该网格的四条边均被水包围。(i, j),寻找包括此点的岛屿边界。输入:grid = [输入:grid = [...

2022-08-27 18:17:17 59

原创 260. 只出现一次的数字 III

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?除两个只出现一次的整数外,nums 中的其他数字都出现两次。输入:nums = [1,2,1,3,2,5]解释:[5, 3] 也是有效的答案。输入:nums = [-1,0]哈希表统计个数,或者使用位运算。输入:nums = [0,1]...

2022-08-27 17:40:10 55

原创 137. 只出现一次的数字 II

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次。请你找出并返回那个只出现了一次的元素。nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次。输入:nums = [0,1,0,1,0,1,99]可以用异或运算解题,也可以用统计个数解题。输入:nums = [2,2,3,2]...

2022-08-27 17:29:16 137

原创 80. 删除有序数组中的重复项 II

解释:函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3。解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]输出:5, nums = [1,1,2,2,3]// 在函数里修改输入数组对于调用者是可见的。输入:nums = [1,1,1,2,2,3]nums 已按升序排列。...

2022-08-27 13:07:11 65

原创 79. 单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word。如果 word 存在于网格中,返回 true;否则,返回 false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。board 和 word 仅由大小写英文字母组成。递归方法,并且回溯,具体看代码。...

2022-08-26 18:03:05 61

原创 57. 插入区间

输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输入:intervals = [[1,5]], newInterval = [2,3]解释:这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。输出:[[1,2],[3,10],[12,16]]输出:[[1,5],[6,9]]输出:[[1,5]]

2022-08-24 15:50:18 92

原创 90. 子集 II

子集问题用回溯的方法来解决,回溯法必然要用到递归。递归想好结束的条件及递归函数的定义,参数。如果不回溯,就会引起重复的问题。给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]输入:nums = [1,2,2]输入:nums = [0]输出:[[],[0]]

2022-08-23 22:26:53 77

原创 54. 螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]从左到右,从上到下,从右到左,从下到上进行模拟顺时针的操作。输出:[1,2,3,6,9,8,7,4,5]

2022-08-22 23:08:02 253

原创 59. 螺旋矩阵 II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。模拟顺时针进行填充,定义4个边界。具体实现看代码及注释。

2022-08-21 17:27:24 89

原创 47. 全排列 II

和49题比都是用回溯方法,有重复的元素,所以要进行去重操作,需要注意的是,去重一定要对元素经行排序,这样通过相邻的节点来判断是否重复使用了。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。输入:nums = [1,1,2]输入:nums = [1,2,3]

2022-08-21 14:23:41 66

原创 46. 全排列

排列、组合、子集、切割、棋盘问题,都用回溯的方法来解题,回溯法必然用到递归,回溯的位置是在递归函数的下面。本体求解的是排列问题,回溯有固定的模板来解题,具体实现看代码及注释。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。输入:nums = [1,2,3]输出:[[0,1],[1,0]]输入:nums = [0,1]输入:nums = [1]...

2022-08-14 23:44:23 112

原创 29. 两数相除

整数除法的结果应当截去(truncate)其小数部分,例如truncate(8.345)=8以及truncate(-2.7335)=-2。假设我们的环境只能存储32位有符号整数,其数值范围是[−231,231−1]。)=truncate(3)=3。解释7/-3=truncate(-2.33333…输入dividend=10,divisor=3。输入dividend=7,divisor=-3。被除数和除数均为32位有符号整数。...

2022-07-30 17:56:26 113

原创 421. 数组中两个数的最大异或值

这道题是位操作,并且应用一个法则如果a^b=max成立,max表示当前得到的“最大值”,那么一定有max^b=a成立。给你一个整数数组nums,返回nums[i]XORnums[j]的最大运算结果,其中0≤i≤j

2022-07-25 22:43:33 642

原创 212. 单词搜索 II

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。给定一个mxn二维字符网格board和一个单词(字符串)列表words,返回所有二维网格上的单词。把单词列表构建成前缀树,然后二维数组在前缀树中查找单词。...

2022-07-19 23:30:44 183 2

原创 65. 有效数字

原始题目链接:https://leetcode.cn/problems/valid-number/有效数字(按顺序)可以分成以下几个部分:一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数小数(按顺序)可以分成以下几个部分:(可选)一个符号字符(‘+’ 或 ‘-’)下述格式之一:至少一位数字,后面跟着一个点 ‘.’至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字一个点 ‘.’ ,后面跟着至少一位数字整数(按顺序)可以分成以下几个部分:(可选)一个符号字符

2022-07-12 16:55:54 344 1

原创 301. 删除无效的括号

原始题目链接:https://leetcode.cn/problems/remove-invalid-parentheses/给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。示例 1:输入:s = “()())()”输出:[“(())()”,“()()()”]示例 2:输入:s = “(a)())()”输出:[“(a())()”,“(a)()()”]示例 3:输入:s = “)(”输出:[“”]提示:1 ..

2022-07-11 14:51:45 126

原创 318. 最大单词长度乘积

原始题目链接:https://leetcode.cn/problems/maximum-product-of-word-lengths/给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 。示例 1:输入:words = [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”]输出:16解释:这两个单词为 “abcw”, “xtfn”。

2022-06-22 21:12:28 144

原创 389. 找不同

原始题目链接:https://leetcode.cn/problems/find-the-difference/给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = “abcd”, t = “abcde”输出:“e”解释:‘e’ 是那个被添加的字母。示例 2:输入:s = “”, t = “y”输出:“y”解题思路:代码实现:...

2022-06-20 23:32:53 89

原创 392. 判断子序列

原始题目链接:https://leetcode.cn/problems/is-subsequence/给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?示例 1:输入:s = “

2022-06-20 23:05:10 127

原创 409. 最长回文串

原始题目链接:https://leetcode.cn/problems/longest-palindrome/给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。在构造过程中,请注意 区分大小写 。比如 “Aa” 不能当做一个回文字符串。示例 1:输入:s = “abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。示例 2:输入:s = “a”输入:1示例 3:输入:s = “bb”输入: 2提示:1 ...

2022-06-19 23:30:29 240

原创 10. 正则表达式匹配

原始题目链接:https://leetcode.cn/problems/regular-expression-matching/给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa”, p = “a”输出:false解释:“a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa”, p =

2022-06-18 15:20:55 241

原创 72. 编辑距离

原始题目链接:https://leetcode.cn/problems/edit-distance/给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros

2022-06-15 23:52:26 58

原创 241. 为运算表达式设计优先级

原始题目链接:https://leetcode.cn/problems/different-ways-to-add-parentheses/给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。示例 1:输入:expression = “2-1-1”输出:[0,2]解释:((2-1)-1) = 0(2-(1-1)) = 2示例 2:输入:expression = “23-45”输出:[-34,-14,

2022-06-15 15:23:09 175

原创 242. 有效的字母异位词

原始题目链接:https://leetcode.cn/problems/valid-anagram/给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false提示:1 ...

2022-06-15 14:40:32 66

原创 208. 实现 Trie (前缀树)

原始题目链接:https://leetcode.cn/problems/implement-trie-prefix-tree/Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word

2022-06-14 20:13:21 78

原创 211. 添加与搜索单词 - 数据结构设计

原始题目链接:https://leetcode.cn/problems/implement-trie-prefix-tree/Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word

2022-06-13 17:51:39 111

原创 205. 同构字符串

原始题目链接:https://leetcode.cn/problems/isomorphic-strings/给定两个字符串 s 和 t ,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。示例 1:输入:s = “egg”, t = “add”输出:true示例 2:输入:s = “foo”, t = “b

2022-06-13 11:17:24 53

原创 187. 重复的DNA序列

原始题目链接:https://leetcode.cn/problems/repeated-dna-sequences/DNA序列 由一系列核苷酸组成,缩写为 ‘A’, ‘C’, ‘G’ 和 ‘T’.。例如,“ACGAATTCCG” 是一个 DNA序列 。在研究 DNA 时,识别 DNA 中的重复序列非常有用。给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串)。你可以按 任意顺序 返回答案。示例 1:输入:s = “AAAAACCCCCAAA

2022-06-13 10:23:40 147

原创 168. Excel表列名称

原始题目链接:https://leetcode.cn/problems/excel-sheet-column-title/给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入:columnNumber = 1输出:“A”示例 2:输入:columnNumber = 28输出:“AB”示例 3:输入:columnNumber = 701输出:“ZY”

2022-06-12 14:27:49 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除