![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
解题思想-贪心法
解题思想-贪心法
overlordmax
这个作者很懒,什么都没留下…
展开
-
678. 有效的括号字符串
1.题目描述给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:(1)任何左括号 ( 必须有相应的右括号 )。(2)任何右括号 ) 必须有相应的左括号 ( 。(3)左括号 ( 必须在对应的右括号之前 )。(4)∗*∗可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。(5)一个空字符串也被视为有效字符串。示例 1:示例 2:示例 3:注意:1.字符串大小将在 [1,100] 范围内。2.思路有效的字原创 2021-03-24 18:14:41 · 305 阅读 · 0 评论 -
670. 最大交换
1.题目描述给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例 1 :示例 2 :注意:1.给定数字的范围是 [0, 108]2.思路1.把数字转化为字符串2.用哈希表记录每个字符最后一次出现的索引i3.遍历字符串,对于每个字符,查找该字符右边比它大的数字,为了找到最大的比该字符大的数字,从9开始倒序查找,并进行交换。3.代码class Solution {public: int maximumSwap(int num) {原创 2021-02-21 23:14:30 · 89 阅读 · 0 评论 -
55. 跳跃游戏
1.题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:示例 2:2.思路依次遍历数组中的每一个位置,并实时维护最远可以到达的位置。对于当前遍历到的位置 x,如果它在最远可以到达的位置的范围内,那么我们就可以从起点通过若干次跳跃到达该位置,因此我们可以用 x+nums[x] 更新最远可以到达的位置。在遍历的过程中,如果最远可以到达的位置大于等于数组中的最后一个位置,那就说明最后一个位置可达,我们就原创 2020-08-31 10:31:24 · 245 阅读 · 0 评论 -
646. 最长数对链
646. 最长数对链1.题目描述给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。示例 :注意:给出数对的个数...原创 2020-02-23 12:21:18 · 153 阅读 · 0 评论 -
763. 划分字母区间
763. 划分字母区间1.题目描述字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:注意:1.S的长度在[1, 500]之间。2.S只包含小写字母’a’到’z’。2.思路(贪心法) 策略就是不断地选择从最左边起最小的区间。可以从第一个字母开始分析,假设第一个字母是 ‘a’,那...原创 2020-02-16 22:54:18 · 258 阅读 · 0 评论 -
53. 最大子序和
53. 最大子序和1.题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:2.方法1(贪心法)f(i)={array[i],if i=0 或者f(i−1)≤0f(i−1)+array[i],if i!=0 并且f(i−1)>0f(i)= \begin{cases} ar...原创 2020-02-16 22:23:40 · 74 阅读 · 0 评论 -
665. 非递减数列
665. 非递减数列1.题目描述给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。示例 1:示例 2:2.思路在出现 nums[i] < nums[i - 1] ...原创 2020-02-16 21:44:23 · 116 阅读 · 0 评论 -
392. 判断子序列
392. 判断子序列1.题目描述给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec...原创 2020-02-16 21:19:44 · 166 阅读 · 0 评论 -
605. 种花问题
605. 种花问题1.题目描述假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:示例 2:注意:1.数组内已种好的花不会...原创 2020-02-16 15:13:00 · 115 阅读 · 0 评论 -
406. 根据身高重建队列
406. 根据身高重建队列1.题目描述假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例2.思路(贪心算法)让我们从最简单的情况下思考,当队列中所有人的 (h,k) 都是相同的高度 h,只有 k 不同时,解决方案很简单:每个人在队列...原创 2020-02-15 22:00:27 · 335 阅读 · 0 评论 -
452. 用最少数量的箭引爆气球
452. 用最少数量的箭引爆气球1.题目描述 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。 一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,...原创 2020-02-15 14:55:08 · 160 阅读 · 0 评论 -
435. 无重叠区间
435. 无重叠区间1.题目描述给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:示例 2:示例 3:2.思路1.先计算最多能组成的不重叠区间个数,然后用区间总个数减去不重叠区间的个数。在每次选择中,区间的结尾最为重要,选择的区间结尾...原创 2020-02-15 13:38:04 · 181 阅读 · 0 评论 -
455. 分发饼干
455. 分发饼干1.题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意...原创 2020-02-15 12:02:15 · 123 阅读 · 0 评论