跳至主要內容
62, 不同路径

一、题目描述

一个机器人位于一个m x n网格的左上角(起始点在下图中标记为Start)。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为Finish)。

问总共有多少条不同的路径?

示例 1

输入: m = 3, n = 7
输出: 28

示例 2
输入: m = 3, n = 2
输出: 3
解释: 从左上角开始,总共有 3 条路径可以到达右下角。


Mike大约 2 分钟dynamic programmingmediummathdynamic programmingcombinatorics
343, 整数拆分

一、题目描述

给定一个正整数n,将其拆分为k正整数的和(k >= 2),并使这些整数的乘积最大化。

返回你可以获得的最大乘积

示例 1
输入: n = 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2
输入: n = 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。


Mike大约 2 分钟dynamic programmingmediummathdynamic programming
198, 打家劫舍

一、题目描述

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。

示例 1
输入: [1, 2, 3, 1]
输出: 4
解释: 偷窃1号房屋(金额 = 1),然后偷窃3号房屋(金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4


Mike大约 2 分钟dynamic programmingmediumarraydynamic programming
740, 删除并获得点数

一、题目描述

给你一个整数数组nums,你可以对它进行一些操作。

每次操作中,选择任意一个nums[i],删除它并获得nums[i]的点数。之后,你必须删除所有等于nums[i] - 1nums[i] + 1的元素。

开始你拥有0个点数。返回你能通过这些操作获得的最大点数。

示例 1
输入: nums = [3, 4, 2]
输出: 6
解释:
删除4获得4个点数,因此3也被删除。
之后,删除2获得2个点数。总共获得6个点数。


Mike大约 3 分钟dynamic programmingmediumarrayhash tabledynamic programming
134, 加油站

一、题目描述

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

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

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


Mike大约 3 分钟greedymediumarraygreedy
53, 最大子序和

一、题目描述

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组是数组中的一个连续部分。

示例 1
输入: nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
输出: 6
解释: 连续子数组[4,-1,2,1]的和最大,为6

示例 2
输入: nums = [1]
输出: 1


Mike大约 3 分钟greedymediumarraydivide and conquerdynamic programming
56, 合并区间

一、题目描述

以数组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].


Mike大约 2 分钟greedymediumarraysorting
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
2
3
4
5
...
7