自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 力扣337 打家劫舍Ⅲ Java版本

除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额。小偷又发现了一个新的可行窃的地区。输入: root = [3,2,3,null,3,null,1]解释: 小偷一晚能够盗取的最高金额 3 + 3 + 1 = 7。输入: root = [3,4,5,1,3,null,1]解释: 小偷一晚能够盗取的最高金额 4 + 5 = 9。树的节点数在 [1, 104] 范围内。

2024-07-12 17:21:10 455

原创 力扣213 打家劫舍 Ⅱ Java版本

同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。解释:你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。输入:nums = [1,2,3,1]输入:nums = [2,3,2]输入:nums = [1,2,3]

2024-07-12 17:20:55 181

原创 力扣139 单词拆分 Java版本

输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]解释: 返回 true 因为 “applepenapple” 可以由 “apple” “pen” “apple” 拼接成。输入: s = “applepenapple”, wordDict = [“apple”, “pen”]输入: s = “leetcode”, wordDict = [“leet”, “code”]注意,你可以重复使用字典中的单词。

2024-07-05 16:44:21 228

原创 力扣198 打家劫舍 Java版本

每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。输入:[2,7,9,3,1]输入:[1,2,3,1]

2024-07-05 16:44:07 388

原创 力扣322 零钱兑换 Java版本

计算并返回可以凑成总金额所需的 最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。输入:coins = [1, 2, 5], amount = 11。输入:coins = [2], amount = 3。输入:coins = [1], amount = 0。你可以认为每种硬币的数量是无限的。解释:11 = 5 + 5 + 1。

2024-06-27 16:45:41 182

原创 力扣279 完全平方数 Java版本

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。解释:12 = 4 + 4 + 4。解释:13 = 4 + 9。

2024-06-27 16:45:21 363

原创 力扣518 零钱兑换Ⅱ Java版本

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0。输入:amount = 5, coins = [1, 2, 5]输入:amount = 10, coins = [10]输入:amount = 3, coins = [2]解释:只用面额 2 的硬币不能凑成总金额 3。题目数据保证结果符合 32 位带符号整数。coins 中的所有值 互不相同。假设每一种面额的硬币有无限个。

2024-06-26 16:08:12 223

原创 力扣377 组合总和Ⅳ Java版本

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target。请你从 nums 中找出并返回总和为 target 的元素组合的个数。进阶:如果给定的数组中含有负数会发生什么?问题会产生何种变化?如果允许负数出现,需要向题目中添加哪些限制条件?输入:nums = [1,2,3], target = 4。输入:nums = [9], target = 3。题目数据保证答案符合 32 位整数范围。请注意,顺序不同的序列被视作不同的组合。nums 中的所有元素 互不相同。

2024-06-26 16:07:34 465

原创 力扣474 一和零 Java版本

其他满足题意但较小的子集包括 {“0001”,“1”} 和 {“10”,“1”,“0”}。解释:最多有 5 个 0 和 3 个 1 的最大子集是 {“10”,“0001”,“1”,“0”} ,因此答案是 4。输入:strs = [“10”, “0001”, “111001”, “1”, “0”], m = 5, n = 3。输入:strs = [“10”, “0”, “1”], m = 1, n = 1。解释:最大的子集是 {“0”, “1”} ,所以答案是 2。

2024-06-25 15:16:46 370

原创 力扣494 目标和 Java版本

例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1”。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。输入:nums = [1,1,1,1,1], target = 3。给你一个非负整数数组 nums 和一个整数 target。输入:nums = [1], target = 1。解释:一共有 5 种方法让最终目标和为 3。

2024-06-25 15:15:20 417

原创 力扣1049 最后一块石头的重量Ⅱ Java版本

可以用0-1背包的思路来解决这个问题,当背包中所能装的石头的重量越接近所有重量的一半的时候,最后一块石头所剩的重量就越小。= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],组合 2 和 1,得到 1,所以数组转化为 [1,1,1],输入:stones = [31,26,33,21,40]输入:stones = [2,7,4,1,8,1]

2024-06-14 10:45:41 288

原创 力扣416 分割等和子集 Java版本

然后就可以考虑用0-1背包的思路来解决这个问题,这里元素的值就是当前元素的价值和重量,背包的容量就是子集元素和的一半,最终需要确定这个背包里是否能够正好装进价值为子集和一半的时候。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。找出两个子集,让这两个子集的和相等可以转化思路为:找到一个子集,这个子集的和是子集中所有元素和的一半。解释:数组可以分割成 [1, 5, 5] 和 [11]。输入:nums = [1,5,11,5]输入:nums = [1,2,3,5]

2024-06-14 09:55:36 495 1

原创 力扣96 不同的二叉搜索树 Java版本

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

2024-06-08 21:26:01 345

原创 卡码网 46. 携带研究材料(第六期模拟笔试)Java版本

这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。小明能够携带 6 种研究材料,但是行李空间只有 1,而占用空间为 1 的研究材料价值为 5,所以最终答案输出 5。第一行包含两个正整数,第一个整数 M 代表研究材料的种类,第二个正整数 N,代表小明的行李空间。输出一个整数,代表小明能够携带的研究材料的最大价值。

2024-06-08 21:25:30 145

原创 力扣343 整数拆分 Java版本

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。解释: 2 = 1 + 1, 1 × 1 = 1。返回 你可以获得的最大乘积。输入: n = 10。

2024-05-21 21:01:45 372

原创 力扣63 不同路径Ⅱ Java版本

机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]那么从左上角到右下角将会有多少条不同的路径?输入:obstacleGrid = [[0,1],[0,0]]obstacleGrid[i][j] 为 0 或 1。网格中的障碍物和空位置分别用 1 和 0 来表示。解释:3x3 网格的正中间有一个障碍物。

2024-05-21 19:36:29 271

原创 力扣62 不同路径 Java版本

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。从左上角开始,总共有 3 条路径可以到达右下角。题目数据保证答案小于等于 2 * 109。输入:m = 3, n = 7。输入:m = 3, n = 2。输入:m = 7, n = 3。输入:m = 3, n = 3。问总共有多少条不同的路径?

2024-05-20 20:08:58 431

原创 力扣746 使用最小的花费爬楼梯 Java版本

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。输入:cost = [1,100,1,1,1,100,1,1,100,1]你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。输入:cost = [10,15,20]请你计算并返回达到楼梯顶部的最低花费。解释:你将从下标为 1 的台阶开始。解释:你将从下标为 0 的台阶开始。

2024-05-20 19:59:35 169

原创 力扣738 单调递增的数字 Java版本

当且仅当每个相邻位数上的数字 x 和 y 满足 x

2024-05-18 15:03:37 290

原创 力扣509 斐波那契数 Java版本

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。F(n) = F(n - 1) + F(n - 2),其中 n > 1。解释:F(2) = F(1) + F(0) = 1 + 0 = 1。解释:F(3) = F(2) + F(1) = 1 + 1 = 2。解释:F(4) = F(3) + F(2) = 2 + 1 = 3。给定 n ,请计算 F(n)。

2024-05-18 15:03:14 233

原创 力扣56 合并区间 Java版本

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]输出:[[1,5]]

2024-04-18 09:06:38 336

原创 力扣763 划分字母区间 Java版本

像 “ababcbacadefegde”, “hijhklij” 这样的划分是错误的,因为划分的片段数较少。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。划分结果为 “ababcbaca”、“defegde”、“hijhklij”。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s。输入:s = “ababcbacadefegdehijhklij”返回一个表示每个字符串片段的长度的列表。输入:s = “eccbbbbdec”输出:[9,7,8]

2024-04-18 09:06:18 620

原创 力扣435 无重叠区间 Java版本

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输入: intervals = [ [1,2], [1,2], [1,2] ]输入: intervals = [ [1,2], [2,3] ]解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。解释: 你不需要移除任何区间,因为它们已经是无重叠的了。解释: 移除 [1,3] 后,剩下的区间没有重叠。

2024-04-17 20:09:24 515

原创 力扣452 用最少数量的箭引爆气球 Java版本

墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。输入:points = [[10,16],[2,8],[1,6],[7,12]]输入:points = [[1,2],[3,4],[5,6],[7,8]]输入:points = [[1,2],[2,3],[3,4],[4,5]]-在x = 11处发射箭,击破气球[10,16]和[7,12]。-在x = 6处射出箭,击破气球[2,8]和[1,6]。

2024-04-17 20:09:00 502

原创 力扣406 根据身高重建队列 Java版本

因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输入:people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]输出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]输出:[[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]]题目数据确保队列可以被重建。

2024-04-16 14:56:58 457

原创 力扣860 柠檬水找零 Java版本

每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。输入:bills = [5,5,5,10,20]

2024-04-16 14:56:32 390

原创 力扣134 加油站 Java版本

从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。输入: gas = [2,3,4], cost = [3,4,3]开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。

2024-04-15 13:54:26 491

原创 力扣1005 k次取反后最大化的数组和 Java版本

解释:选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。解释:选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。选择某个下标 i 并将 nums[i] 替换为 -nums[i]。输入:nums = [2,-3,-1,5,-4], k = 2。解释:选择下标 1 ,nums 变为 [4,-2,3]。输入:nums = [3,-1,0,2], k = 3。以这种方式修改数组后,返回数组 可能的最大和。输入:nums = [4,2,3], k = 1。

2024-04-15 13:54:08 415

原创 力扣45 跳跃游戏Ⅱ Java版本

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。输入: nums = [2,3,1,1,4]解释: 跳到最后一个位置的最小跳跃数是 2。输入: nums = [2,3,0,1,4]题目保证可以到达 nums[n-1]

2024-04-14 10:20:47 173

原创 力扣55 跳跃游戏 Java版本

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]

2024-04-14 10:20:23 245

原创 力扣122 买卖股票的最佳时机Ⅱ Java版本

解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。输入:prices = [7,1,5,3,6,4]

2024-04-13 11:33:46 289

原创 力扣455 分发饼干 Java版本

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。但是,每个孩子最多只能给一块饼干。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。输入: g = [1,2,3], s = [1,1]输入: g = [1,2], s = [1,2,3]

2024-04-13 11:33:15 308

原创 力扣376 摆动序列 Java版本

相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8)。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。输入:nums = [1,17,5,10,13,15,10,5,16,8]

2024-04-12 22:20:54 253

原创 力扣53 最大子数组和 Java版本

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。输入:nums = [5,4,-1,7,8]输入:nums = [1]是数组中的一个连续部分。

2024-04-12 22:20:07 428

原创 力扣51 N皇后 Java版本

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。解释:如上图所示,4 皇后问题存在两个不同的解法。输出:[[“Q”]]

2024-04-10 10:57:18 767

原创 力扣47 全排列Ⅱ Java版本

输出:[[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]

2024-04-10 10:56:57 164

原创 力扣46 全排列 Java版本

输出:[[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 中的所有整数 互不相同。输入:nums = [0,1]输入:nums = [1]

2024-04-09 15:18:43 118

原创 力扣90 子集Ⅱ Java版本

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]输入:nums = [1,2,2]输入:nums = [0]输出:[[],[0]]

2024-04-09 15:18:19 248

原创 力扣78 子集 Java版本

无论path是用ArraList还是LinkedList,最后result.add的时候都要new ArrayList,要不后面path改变的时候也会带着result改变。输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]给你一个整数数组 nums ,数组中的元素 互不相同。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。输入:nums = [1,2,3]nums 中的所有元素 互不相同。输入:nums = [0]输出:[[],[0]]

2024-04-08 11:01:58 710

原创 力扣491 非递减子序列 Java版本

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。输入:nums = [4,4,3,2,1]输入:nums = [4,6,7,7]输出:[[4,4]]

2024-04-08 11:01:32 283

空空如也

空空如也

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

TA关注的人

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