![](https://img-blog.csdnimg.cn/90517eef775f42b98384136fdaf56997.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
力扣题目解析
文章平均质量分 51
刷力扣涉及到的一些算法知识以及一些让人想不到的新知识就放在这里面啦
菜业
这个作者很懒,什么都没留下…
展开
-
354. 俄罗斯套娃信封问题(动态规划)
这个题目是一个套娃问题,首先我们应该对数组进行排序,因为相同尺寸的信封不能够嵌套,所以我们按照每个子数组的第一个元素升序排序,第二个元素降序排序,这样这个问题就转化成了以第二个元素为主的最长上升子序列问题,这个思路好是好,但是想到前面快速排序需要耗费nlog。如果envelopes[i]/[1]大于我们的f[i-1],那么f[i]=envelopes[i]/[1];当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。n,后面的那个动态规划又是n。......原创 2022-07-28 18:35:27 · 650 阅读 · 0 评论 -
面试题 17.24. 最大子矩阵(动态规划)
显然这个题目是一个二维问题,那么我们就把它压缩成一维,然后再用上面的求解一维的方法,我们规定i是压缩的二维数组的起始行,j是压缩二维数组的结束行,那么那么我们需要遍历i和j;得到一个一维数组,然后寻找最大子序列的和,并记录这个最大子序列和的起始位置和结束位置,然后算出的最大值再去和一个全局最大值比较,如果超过他那么更新r1,r2,c1,c2。我们之前解决过一维数组的最大和问题,回顾一下就是规定长度为i的数组的最大和为dp[i]。**注意**本题相对书上原题稍作改动。分别代表子矩阵左上角的行号和列号,....原创 2022-07-28 18:20:51 · 118 阅读 · 0 评论 -
152.乘积最大子数组(动态规划)
单串问题之lis问题原创 2022-07-26 16:13:59 · 274 阅读 · 0 评论 -
300. 最长递增子序列(动态规划)
dp问题原创 2022-07-26 15:48:52 · 104 阅读 · 0 评论 -
539.最小时间差(小模拟)
题目:难度中等122收藏分享切换为英文接收动态反馈给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。示例 1:输入:timePoints = ["23:59","00:00"]输出:1示例 2:输入:timePoints = ["00:00","23:59","00:00"]输出:0提示: 2 <= timePoints <= 2 * 104 timePoints[i] 格原创 2022-01-31 10:44:47 · 521 阅读 · 1 评论 -
452用最少的箭引爆气球
题目:难度中等507收藏分享切换为英文接收动态反馈在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 x``start,x``end, 且满足 xstart ≤ x ≤ x``end,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一..原创 2022-01-31 10:44:01 · 90 阅读 · 0 评论 -
435.无重叠区间(贪心算法)
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。 示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。 示例 3:输..原创 2022-01-31 10:43:08 · 298 阅读 · 0 评论 -
300.最长递增子序列(动态规划)
题目给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3] 输出:4示例 3:输入:nums = [7,7原创 2022-01-31 10:41:46 · 69 阅读 · 0 评论 -
219.存在重复数组(哈希表,滑动窗口,以及自创point类法)题目:
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,1], k = 3输出:true示例 2:输入:nums = [1,0,1,1], k = 1输出:true示例 3:输入:nums = [1,2,3,1,2,3], k = 2输出:f..原创 2022-01-31 10:40:30 · 359 阅读 · 0 评论 -
122.买股票的最好时机II(贪心算法)
题目:给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后..原创 2022-01-31 10:39:12 · 102 阅读 · 0 评论 -
56.合并区间(贪心算法)
题目:难度中等1267收藏分享切换为英文接收动态反馈以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6原创 2022-01-31 10:37:38 · 137 阅读 · 0 评论 -
55.跳跃游戏(贪心算法)
题目:55. 跳跃游戏难度中等1589收藏分享切换为英文接收动态反馈给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎原创 2022-01-31 10:36:42 · 2193 阅读 · 0 评论 -
42.跳跃问题II(贪心算法)
贪心算法原创 2022-01-31 10:35:20 · 380 阅读 · 0 评论 -
860柠檬水找零
题目在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:bills = [5,5,5原创 2021-12-20 11:37:54 · 119 阅读 · 0 评论 -
455分发饼干(贪心算法)
解题思路利用贪心策略,给饥饿度最低的孩子分分配最小能饱腹的饼干。#include<iostream>#include<vector> #include<algorithm>using namespace std;//这里用来定义变量//显然题目给的饼干应该是从小到大 所以从后往前遍历 胃口值也是从小到大排序 //(利用alogrithm排序就好) vector<int> g={10,9,8,7};//表示饥饿度vector<原创 2021-12-16 00:15:06 · 1268 阅读 · 0 评论