跳至主要內容
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
746, 使用最小花费爬楼梯

一、题目描述

给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为0或下标为1的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。

示例 1
输入: cost = [10, 15, 20]
输出: 15
解释: 你将从下标为1的台阶开始。


Mike大约 2 分钟dynamic programmingeasyarraydynamic programming
1137, 第N个泰波那契数

一、题目描述

泰波那契序列Tn定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2

给你整数n,请返回第n个泰波那契数Tn的值。

示例 1
输入: n = 4
输出: 4
解释:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

示例 2
输入: n = 25
输出: 1389537


Mike大约 3 分钟dynamic programmingeasymathdynamic programmingmemoization
70, 爬楼梯

一、题目描述

假设你正在爬楼梯。需要n阶你才能到达楼顶。

每次你可以爬12个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1
输入: n = 2
输出: 2
解释: 有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶

示例 2
输入: n = 3
输出: 3
解释: 有三种方法可以爬到楼顶。


Mike大约 3 分钟dynamic programmingeasymathdynamic programmingmemoization
509, 斐波那契数

一、题目描述

斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由01开始,后面的每一项数字都是前面两项数字的和。也就是:

  • F(0) = 0,F(1) = 1
  • F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定n,请计算F(n)

示例 1
输入: n = 2
输出: 1
解释: F(2) = F(1) + F(0) = 1 + 0 = 1


Mike大约 4 分钟dynamic programmingeasyrecursionmemoizationmathdynamic programming
968, 监控二叉树

一、题目描述

给定一个二叉树,我们在树的节点上安装摄像头。

节点上的每个摄影头都可以监视其父对象、自身及其直接子对象

计算监控树的所有节点所需的最小摄像头数量。

示例 1

输入: root = [0, 0, null, 0, 0]
输出: 1
解释: 如图所示,一台摄像头足以监控所有节点。

示例 2

输入: root = [0, 0, null, 0, null, 0, null, null, 0]
输出: 2
解释: 需要至少两个摄像头来监视树的所有节点。上图显示了摄像头放置的有效位置之一。


Mike大约 4 分钟greedyhardbinary treedepth first searchdynamic programming
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
2