贪心法
文章平均质量分 57
CIA_agent
这个作者很懒,什么都没留下…
展开
-
leetcode 1353. 最多可以参加的会议数目
给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi。你可以在满足 startDayi原创 2023-10-29 19:44:16 · 206 阅读 · 0 评论 -
leetcode 502. IPO
总而言之,从给定项目中选择 最多 k 个不同项目的列表,以 最大化最终资本 ,并输出最终可获得的最多资本。输入:k = 2, w = 0, profits = [1,2,3], capital = [0,1,1]输入:k = 3, w = 0, profits = [1,2,3], capital = [0,1,2]当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。由于你最多可以选择两个项目,所以你需要完成 2 号项目以获得最大的资本。在完成后,你将获得 1 的利润,你的总资本将变为 1。原创 2023-10-09 09:40:36 · 115 阅读 · 0 评论 -
leetcode 135. 分发糖果
思路,可以采用贪心法,从左往右遍历,默认是1,如果 ratings[i] > ratings[i-1], 则右边的数等于左边数加+, 同理,再从右往左遍历一次。解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。输入:ratings = [1,0,2]输入:ratings = [1,2,2]原创 2023-09-20 09:16:17 · 209 阅读 · 0 评论 -
leetcode 152. 乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。思路: 用 g[i] 表示以第 i 个元素结尾的最大连续乘积,s[i] 表示以第 i 个元素结尾的最小连续乘积。则 g[i] = max(nums[i], g[i-1]*nums[i], s[i-1]*nums[i])解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。输入: nums = [2,3,-2,4]输入: nums = [-2,0,-1]原创 2023-08-04 22:35:58 · 301 阅读 · 0 评论 -
leetcode 2542. 最大子序列的分数
思路,可以把 nums1 和 nums2 组合到一起后按 nums2 从大到小排序,先用最小值堆如堆 k个元素,因为往右 nums2[i] 会逐渐变小,故只有 nums1[i] 大于堆顶元素(sum会变大),结果才可能变大。用公示表示: (nums1[i0] + nums1[i1] +…输入:nums1 = [4,2,3,1,1], nums2 = [7,5,10,9,6], k = 1。输入:nums1 = [1,3,3,2], nums2 = [2,1,3,4], k = 3。原创 2023-07-23 23:18:41 · 208 阅读 · 0 评论 -
leetcode 649. Dota2 参议院
然后,如果有 n 个参议员,给定字符串的大小将是 n。宣布胜利:如果参议员发现有权利投票的参议员都是 同一个阵营的 ,他可以宣布胜利并决定在游戏中的有关变化。第 1 轮时,第一个来自 Radiant 阵营的参议员可以使用第一项权利禁止第二个参议员的权利。这一轮中,第三个来自 Dire 阵营的参议员可以使用他的第一项权利禁止第一个参议员的权利。禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失 所有的权利。这一轮中,第二个来自 Dire 阵营的参议员会将被跳过,因为他的权利被禁止了。原创 2023-07-22 21:02:22 · 135 阅读 · 0 评论 -
leetcode 334. 递增的三元子序列
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true;解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6。进阶:你能实现时间复杂度为 O(n) ,空间复杂度为 O(1) 的解决方案吗?输入:nums = [2,1,5,0,4,6]输入:nums = [1,2,3,4,5]输入:nums = [5,4,3,2,1]原创 2023-07-18 10:07:29 · 279 阅读 · 0 评论 -
leetcode 630. 课程表 III
2.根据1,我们可以把课程根据 lastDay 从小到大排序,当遍历到 (ti,di) 课程时,如果学 ti 课程,总时间超过了 di,输入:courses = [[100, 200], [200, 1300], [1000, 1250], [2000, 3200]]第二,修第 3 门课,耗费 1000 天,在第 1100 天完成,在第 1101 天开始下门课程。首先,修第 1 门课,耗费 100 天,在第 100 天完成,在第 101 天开始下门课。输入:courses = [[3,2],[4,3]]原创 2023-07-17 21:31:25 · 374 阅读 · 0 评论 -
leedcode 1326. 灌溉花园的最少水龙头数目
给你一个整数 n 和一个长度为 n + 1 的整数数组 ranges ,其中 ranges[i] (下标从 0 开始)表示:如果打开点 i 处的水龙头,可以灌溉的区域为 [i - ranges[i], i + ranges[i]]。dp[k] = min(dp[k], dp[start]+1), 其中 k的范围为 [start, end]。输入:n = 5, ranges = [3,4,1,1,0,0]输入:n = 3, ranges = [0,0,0,0]点 2 处的水龙头可以灌溉区间 [1,3]原创 2023-07-16 18:47:49 · 281 阅读 · 0 评论 -
BM71 最长上升子序列(一)
描述给定一个长度为 n 的数组 arr,求它的最长严格上升子序列的长度。所谓子序列,指一个数组删掉一些数(也可以不删)之后,形成的新数组。例如 [1,5,3,7,3] 数组,其子序列有:[1,3,3]、[7] 等。但 [1,6]、[1,3,5] 则不是它的子序列。我们定义一个序列是 严格上升 的,当且仅当该序列不存在两个下标 i 和 j 满足 i<j 且 arr[i]>=arr[j]数据范围: 0≤n≤1000要求:时间复杂度 O(n^2), 空间复杂度 O(n)示例1输入:[6原创 2022-04-11 09:31:26 · 396 阅读 · 1 评论 -
leetcode 714. 买卖股票的最佳时机含手续费
leetcode 714. 买卖股票的最佳时机含手续费给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每次交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。示例 1:输入: prices = [1, 3, 2, 8, 4, 9]...原创 2019-07-28 22:01:10 · 348 阅读 · 0 评论