跳至主要內容
134, 加油站

一、题目描述

在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。

你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。

给定两个整数数组gascost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则保证它是唯一的。


Mike大约 3 分钟greedymediumarraygreedy
763, 划分字母区间

一、题目描述

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。

返回一个表示每个字符串片段的长度的列表。

示例 1
输入: s = "ababcbacadefegdehijhklij"
输出: [9, 7, 8]
解释:
划分结果为"ababcbaca""defegde""hijhklij"
每个字母最多出现在一个片段中。
"ababcbacadefegde", "hijhklij"这样的划分是错误的,因为划分的片段数较少。


Mike大约 1 分钟greedymediumgreedytwo pointershash tablestring
435, 无重叠区间

一、题目描述

给定一个区间的集合intervals,其中intervals[i] = [starti, endi]。返回需要移除区间的最小数量,使剩余区间互不重叠

示例 1
输入: intervals = [[1, 2], [2, 3], [3, 4], [1, 3]]
输出: 1
解释: 移除[1, 3]后,剩下的区间没有重叠。

示例 2
输入: intervals = [[1, 2], [1, 2], [1, 2]]
输出: 2
解释: 你需要移除两个[1, 2]来使剩下的区间没有重叠。


Mike大约 2 分钟greedymediumarraygreedydynamic programming
452, 用最少数量的箭引爆气球

一、题目描述

有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组points,其中points[i] = [xstart, xend]表示水平直径在xstartxend之间的气球。你不知道气球的确切y坐标。

一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为xstartxend,且满足xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。弓箭一旦被射出之后,可以无限地前进。


Mike大约 3 分钟greedymediumarraygreedysorting
45, 跳跃游戏II

一、题目描述

给定一个长度为n0索引整数数组nums。初始位置为nums[0]

每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意nums[i + j]处:

  • 0 <= j <= nums[i]
  • i + j < n

Mike大约 2 分钟greedymediumarraygreedydynamic programming
55, 跳跃游戏

一、题目描述

给你一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false

示例 1
输入: nums = [2, 3, 1, 1, 4]
输出: true
解释: 可以先跳1步,从下标0到达下标1, 然后再从下标13步到达最后一个下标。


Mike大约 2 分钟greedymediumarraygreedydynamic programming
135, 分发糖果

一、题目描述

n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。

你需要按照以下要求,给这些孩子分发糖果:

  • 每个孩子至少分配到1个糖果。
  • 相邻两个孩子评分更高的孩子会获得更多的糖果。

请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目

示例 1
输入: ratings = [1, 0, 2]
输出: 5
解释: 你可以分别给第一个、第二个、第三个孩子分发2、1、2颗糖果。


Mike大约 2 分钟greedyhardarraygreedy
714, 买卖股票的最佳时机含手续费

一、题目描述

给定一个整数数组prices,其中prices[i]表示第i天的股票价格;整数fee代表了交易股票的手续费用。

你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。

返回获得利润的最大值。

注意: 这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。

示例 1
输入: prices = [1, 3, 2, 8, 4, 9], fee = 2
输出: 8
解释: 能够达到的最大利润:
在此处买入prices[0] = 1
在此处卖出prices[3] = 8
在此处买入prices[4] = 4
在此处卖出prices[5] = 9
总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8


Mike大约 3 分钟greedymediumgreedyarraydynamic programming
122, 买卖股票的最佳时机II

一、题目描述

给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。

返回你能获得的最大利润

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


Mike大约 3 分钟greedymediumgreedyarraydynamic programming
738, 单调递增的数字

一、题目描述

当且仅当每个相邻位数上的数字xy满足x <= y时,我们称这个整数是单调递增的。

给定一个整数n,返回小于或等于n的最大数字,且数字呈单调递增

示例 1
输入: n = 10
输出: 9

示例 2
输入: n = 1234
输出: 1234


Mike大约 1 分钟greedymediumgreedymath
2