摘要:
动态规划 1.概念 动态规划常用于的一个问题就是求最值, 比如说最常见的求最长递增子序列啊等待。 其实动态规划的问题核心仍然是穷举,想一下求最值,那最可能的就是把所有结果列出来,谁最大要谁。 动态规划大部分是自底向上的,所以也就脱离了递归,更多的是采用for循环的迭代; 动态规划的典型类型: 背包问 阅读全文
摘要:
509. 斐波那契数 知识点:递归;动态规划 题目描述 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n 阅读全文
摘要:
120. 三角形最小路径和 知识点:动态规划;最小路径 题目描述 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下 阅读全文
摘要:
5. 最长回文子串 知识点:动态规划;回文串 题目描述 给你一个字符串 s,找到 s 中最长的回文子串。 示例 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 输入:s = "cbbd" 输出:"bb" 输入:s = "a" 输出:"a" 输入:s = "a 阅读全文
摘要:
213. 打家劫舍 II 知识点:动态规划;打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报 阅读全文
摘要:
198. 打家劫舍 知识点:动态规划;打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触 阅读全文
摘要:
64. 最小路径和 知识点:动态规划 题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因 阅读全文
摘要:
121. 买卖股票的最佳时机 知识点:数组;哨兵;动态规划 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返 阅读全文
摘要:
746. 使用最小花费爬楼梯 知识点:动态规划 题目描述 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。 请你找出达到楼层顶部的 阅读全文
摘要:
70. 爬楼梯 知识点:动态规划 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 阅读全文
摘要:
回溯 1.概念 回溯是很经典的一个算法,什么是回溯,回溯其实是一种暴力枚举的方式,为啥都暴力了还是很经典的一种方法呢,其实是因为有些问题我们能暴力出来就不错了,就别要其他自行车了。常见的回溯类问题:组合;排列;切割;子集;棋牌; 其实回溯算法就是常说的DFS,本质上是一种暴力枚举算法; 回溯算法常用 阅读全文
摘要:
【回溯】77. 组合 知识点:递归;回溯;组合;剪枝 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 输入:n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [ 阅读全文
摘要:
51. N 皇后 知识点:递归;回溯;N皇后;剪枝 题目描述 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 输入:n = 4 输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解释 阅读全文
摘要:
47. 全排列 II 知识点:递归;回溯;排列 题目描述 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 输入:nums = [1,2,3] 输出:[[1,2,3 阅读全文
摘要:
46. 全排列 知识点:递归;回溯;排列 题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 阅读全文