
贪心法
枫流仁武
这个作者很懒,什么都没留下…
展开
-
LeetCode 1893 检查区域内所有整数都被覆盖
难度简单89收藏分享切换为英文接收动态反馈给你一个二维整数数组ranges和两个整数left和right。每个ranges[i] = [starti, endi]表示一个从starti到endi的闭区间。如果闭区间[left, right]内每个整数都被ranges中至少一个区间覆盖,那么请你返回true,否则返回false。已知区间ranges[i] = [starti, endi],如果整数x满足starti<= x &l...原创 2021-07-24 16:53:05 · 206 阅读 · 0 评论 -
优快云 605 种花问题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n。能否在不打破种植规则的情况下种入n朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出: True示例 2:输入: flowerbed = [1,0,0,0,1], n = 2输出: Fals...原创 2021-01-01 16:43:40 · 88 阅读 · 0 评论 -
LeetCode 1111 有效括号的嵌套深度
有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然。详情参见题末「有效括号字符串」部分。嵌套深度 depth 定义:即有效括号字符串嵌套的层数,depth(A) 表示有效括号字符串 A 的嵌套深度。详情参见题末「嵌套深度」部分。有效括号字符串类型与对应的嵌套深度计算方法如下图所示:给你一个「有效括号字符串」 seq,请你将其分成两个不相交的有效括号字符串,A 和B,并使这两个字符串的深度最小。不相交:每个 seq[i] 只能分给 A 和 B 二者中的一个,不能既..原创 2020-12-23 10:17:57 · 150 阅读 · 0 评论 -
LeetCode 316 去除重复字母
给你一个字符串s,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。利用单调栈实现。有关键点,如果一个字母已经在栈中出现了,那么该字母就不应该和栈顶元素比较了。记录每个元素剩余个数。from collections import defaultdictclass Solution: def removeDuplicateLetters(self, s: str) -> str: cnt...原创 2020-12-20 10:15:52 · 283 阅读 · 3 评论 -
LeetCode 659 分割数组为连续的子序列
给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。如果可以完成上述分割,则返回 true ;否则,返回 false 。示例 1:输入: [1,2,3,3,4,5]输出: True解释:你可以分割出这样两个连续子序列 :1, 2, 33, 4, 5示例 2:输入: [1,2,3,3,4,4,5,5]输出: True解释:你可以分割出这样两个连续子序列 :1, 2, 3...原创 2020-12-04 09:21:01 · 185 阅读 · 0 评论 -
LeetCode 767 重构字符串
给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例1:输入: S = "aab"输出: "aba"示例 2:输入: S = "aaab"输出: ""本题采用贪心算法和堆来求解。我们尽可能向构造的字符串中加入剩余数量多的字符,这样避免剩余过多的单一字符,最后相邻。每次选出剩余最多的两个字符就可以避免和以构造的字符串末尾同。import heapqfrom collections impo.原创 2020-11-30 18:59:43 · 91 阅读 · 0 评论 -
LeetCode 406 根据身高重建队列
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]由于是看前面有几个升高更高的,所以我们需要按照身高由高到低排序。然后再项结果队列中一个一个插入元素。原创 2020-11-16 19:47:38 · 98 阅读 · 0 评论 -
LeetCode 122 买卖股票的最佳时机2
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。道理很简单,如果当天股价高于前一天,那么就加上这两天的差值。from typing import *class Solution: def maxProfit(self, prices: List[int]) -> int: tem_p.原创 2020-11-08 10:10:31 · 111 阅读 · 0 评论 -
LeetCode 646 最长数对链
给出n个数对。在每一个数对中,第一个数字总是比第二个数字小。现在,我们定义一种跟随关系,当且仅当b < c时,数对(c, d)才可以跟在(a, b)后面。我们用这种形式来构造一个数对链。给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。贪心算法class Solution: def findLongestChain(self, pairs: List[List[int]]) -> int:...原创 2020-09-29 18:21:54 · 126 阅读 · 0 评论