directory
0.0.0-20240920062246-d0657495930a
Repository: https://github.com/yigmmk/leetcode.git
Documentation: pkg.go.dev

# Packages

* @lc app=leetcode.cn id=1137 lang=golang * * [1137] 第 N 个泰波那契数 * * https://leetcode.cn/problems/n-th-tribonacci-number/description/ * * algorithms * Easy (60.94%) * Likes: 291 * Dislikes: 0 * Total Accepted: 181.2K * Total Submissions: 297.4K * Testcase Example: '4' * * 泰波那契序列 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 * * * * * 提示: * * * 0 <= n <= 37 * 答案保证是一个 32 位整数,即 answer <= 2^31 - 1。 * * */.
* @lc app=leetcode.cn id=1139 lang=golang * * [1139] 最大的以 1 为边界的正方形 * * https://leetcode.cn/problems/largest-1-bordered-square/description/ * * algorithms * Medium (49.51%) * Likes: 130 * Dislikes: 0 * Total Accepted: 15.7K * Total Submissions: 30.3K * Testcase Example: '[[1,1,1],[1,0,1],[1,1,1]]' * * 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 * 0。 * * * * 示例 1: * * 输入:grid = [[1,1,1],[1,0,1],[1,1,1]] * 输出:9 * * * 示例 2: * * 输入:grid = [[1,1,0,0]] * 输出:1 * * * * * 提示: * * * 1 <= grid.length <= 100 * 1 <= grid[0].length <= 100 * grid[i][j] 为 0 或 1 * * */.
* @lc app=leetcode.cn id=1140 lang=golang * * [1140] 石子游戏 II * * https://leetcode.cn/problems/stone-game-ii/description/ * * algorithms * Medium (66.27%) * Likes: 216 * Dislikes: 0 * Total Accepted: 16.8K * Total Submissions: 24.2K * Testcase Example: '[2,7,9,4,4]' * * 爱丽丝和鲍勃继续他们的石子游戏。许多堆石子 排成一行,每堆都有正整数颗石子 piles[i]。游戏以谁手中的石子最多来决出胜负。 * * 爱丽丝和鲍勃轮流进行,爱丽丝先开始。最初,M = 1。 * * 在每个玩家的回合中,该玩家可以拿走剩下的 前 X 堆的所有石子,其中 1 <= X <= 2M。然后,令 M = max(M, X)。 * * 游戏一直持续到所有石子都被拿走。 * * 假设爱丽丝和鲍勃都发挥出最佳水平,返回爱丽丝可以得到的最大数量的石头。 * * * * 示例 1: * * * 输入:piles = [2,7,9,4,4] * 输出:10 * 解释:如果一开始Alice取了一堆,Bob取了两堆,然后Alice再取两堆。爱丽丝可以得到2 + 4 + 4 = * 10堆。如果Alice一开始拿走了两堆,那么Bob可以拿走剩下的三堆。在这种情况下,Alice得到2 + 7 = 9堆。返回10,因为它更大。 * * * 示例 2: * * * 输入:piles = [1,2,3,4,5,100] * 输出:104 * * * * * 提示: * * * 1 <= piles.length <= 100 * 1 <= piles[i] <= 10^4 * * */.
* @lc app=leetcode.cn id=1143 lang=golang * * [1143] 最长公共子序列 * * https://leetcode.cn/problems/longest-common-subsequence/description/ * * algorithms * Medium (64.98%) * Likes: 1486 * Dislikes: 0 * Total Accepted: 398.8K * Total Submissions: 613.8K * Testcase Example: '"abcde"\n"ace"' * * 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 * * 一个字符串的 子序列 * 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 * * * 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。 * * * 两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。 * * * * 示例 1: * * * 输入:text1 = "abcde", text2 = "ace" * 输出:3 * 解释:最长公共子序列是 "ace" ,它的长度为 3 。 * * * 示例 2: * * * 输入:text1 = "abc", text2 = "abc" * 输出:3 * 解释:最长公共子序列是 "abc" ,它的长度为 3 。 * * * 示例 3: * * * 输入:text1 = "abc", text2 = "def" * 输出:0 * 解释:两个字符串没有公共子序列,返回 0 。 * * * * * 提示: * * * 1 * text1 和 text2 仅由小写英文字符组成。 * * */.
* @lc app=leetcode.cn id=121 lang=golang * * [121] 买卖股票的最佳时机 * * https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/ * * algorithms * Easy (57.71%) * Likes: 3334 * Dislikes: 0 * Total Accepted: 1.3M * Total Submissions: 2.2M * Testcase Example: '[7,1,5,3,6,4]' * * 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 * * 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 * * 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 * * * * 示例 1: * * * 输入:[7,1,5,3,6,4] * 输出:5 * 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 * ⁠ 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。 * * * 示例 2: * * * 输入:prices = [7,6,4,3,1] * 输出:0 * 解释:在这种情况下, 没有交易完成, 所以最大利润为 0。 * * * * * 提示: * * * 1 * 0 * * */.
* @lc app=leetcode.cn id=122 lang=golang * * [122] 买卖股票的最佳时机 II * * https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/ * * algorithms * Medium (72.84%) * Likes: 2383 * Dislikes: 0 * Total Accepted: 1M * Total Submissions: 1.4M * Testcase Example: '[7,1,5,3,6,4]' * * 给你一个整数数组 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 。 * * 示例 2: * * * 输入:prices = [1,2,3,4,5] * 输出:4 * 解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 * 。 * 总利润为 4 。 * * 示例 3: * * * 输入:prices = [7,6,4,3,1] * 输出:0 * 解释:在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0 。 * * * * 提示: * * * 1 <= prices.length <= 3 * 10^4 * 0 <= prices[i] <= 10^4 * * */.
* @lc app=leetcode.cn id=1223 lang=golang * * [1223] 掷骰子模拟 * * https://leetcode.cn/problems/dice-roll-simulation/description/ * * algorithms * Hard (49.80%) * Likes: 138 * Dislikes: 0 * Total Accepted: 7.4K * Total Submissions: 13K * Testcase Example: '2\n[1,1,2,2,2,3]' * * 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 * * 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始编号)。 * * 现在,给你一个整数数组 rollMax 和一个整数 n,请你来计算掷 n 次骰子可得到的不同点数序列的数量。 * * 假如两个序列中至少存在一个元素不同,就认为这两个序列是不同的。由于答案可能很大,所以请返回 模 10^9 + 7 之后的结果。 * * * * 示例 1: * * 输入:n = 2, rollMax = [1,1,2,2,2,3] * 输出:34 * 解释:我们掷 2 次骰子,如果没有约束的话,共有 6 * 6 = 36 种可能的组合。但是根据 rollMax 数组,数字 1 和 2 * 最多连续出现一次,所以不会出现序列 (1,1) 和 (2,2)。因此,最终答案是 36-2 = 34。 * * * 示例 2: * * 输入:n = 2, rollMax = [1,1,1,1,1,1] * 输出:30 * * * 示例 3: * * 输入:n = 3, rollMax = [1,1,1,2,2,3] * 输出:181 * * * * * 提示: * * * 1 <= n <= 5000 * rollMax.length == 6 * 1 <= rollMax[i] <= 15 * * */.
* @lc app=leetcode.cn id=123 lang=golang * * [123] 买卖股票的最佳时机 III * * https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/ * * algorithms * Hard (60.03%) * Likes: 1651 * Dislikes: 0 * Total Accepted: 307.5K * Total Submissions: 511.9K * Testcase Example: '[3,3,5,0,0,3,1,4]' * * 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 * * 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 * * 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 * * * * 示例 1: * * * 输入:prices = [3,3,5,0,0,3,1,4] * 输出:6 * 解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。 * 随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3 。 * * 示例 2: * * * 输入:prices = [1,2,3,4,5] * 输出:4 * 解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 * 。 * 注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 * 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。 * * * 示例 3: * * * 输入:prices = [7,6,4,3,1] * 输出:0 * 解释:在这个情况下, 没有交易完成, 所以最大利润为 0。 * * 示例 4: * * * 输入:prices = [1] * 输出:0 * * * * * 提示: * * * 1 * 0 * * */.
No description provided by the author
* @lc app=leetcode.cn id=1334 lang=golang * * [1334] 阈值距离内邻居最少的城市 * * https://leetcode.cn/problems/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance/description/ * * algorithms * Medium (60.96%) * Likes: 182 * Dislikes: 0 * Total Accepted: 28.5K * Total Submissions: 46.5K * Testcase Example: '4\n[[0,1,3],[1,2,1],[1,3,4],[2,3,1]]\n4' * * 有 n 个城市,按从 0 到 n-1 编号。给你一个边数组 edges,其中 edges[i] = [fromi, toi, weighti] 代表 * fromi 和 toi 两个城市之间的双向加权边,距离阈值是一个整数 distanceThreshold。 * * 返回能通过某些路径到达其他城市数目最少、且路径距离 最大 为 distanceThreshold 的城市。如果有多个这样的城市,则返回编号最大的城市。 * * 注意,连接城市 i 和 j 的路径的距离等于沿该路径的所有边的权重之和。 * * * * 示例 1: * * * * * 输入:n = 4, edges = [[0,1,3],[1,2,1],[1,3,4],[2,3,1]], distanceThreshold = 4 * 输出:3 * 解释:城市分布图如上。 * 每个城市阈值距离 distanceThreshold = 4 内的邻居城市分别是: * 城市 0 -> [城市 1, 城市 2] * 城市 1 -> [城市 0, 城市 2, 城市 3] * 城市 2 -> [城市 0, 城市 1, 城市 3] * 城市 3 -> [城市 1, 城市 2] * 城市 0 和 3 在阈值距离 4 以内都有 2 个邻居城市,但是我们必须返回城市 3,因为它的编号最大。 * * * 示例 2: * * * * * 输入:n = 5, edges = [[0,1,2],[0,4,8],[1,2,3],[1,4,2],[2,3,1],[3,4,1]], * distanceThreshold = 2 * 输出:0 * 解释:城市分布图如上。 * 每个城市阈值距离 distanceThreshold = 2 内的邻居城市分别是: * 城市 0 -> [城市 1] * 城市 1 -> [城市 0, 城市 4] * 城市 2 -> [城市 3, 城市 4] * 城市 3 -> [城市 2, 城市 4] * 城市 4 -> [城市 1, 城市 2, 城市 3] * 城市 0 在阈值距离 2 以内只有 1 个邻居城市。 * * * * * 提示: * * * 2 * 1 * edges[i].length == 3 * 0 i < toi < n * 1 i, distanceThreshold * 所有 (fromi, toi) 都是不同的。 * * */.
* @lc app=leetcode.cn id=1477 lang=golang * * [1477] 找两个和为目标值且不重叠的子数组 * * https://leetcode.cn/problems/find-two-non-overlapping-sub-arrays-each-with-target-sum/description/ * * algorithms * Medium (30.78%) * Likes: 124 * Dislikes: 0 * Total Accepted: 8.3K * Total Submissions: 26.8K * Testcase Example: '[3,2,2,4,3]\n3' * * 给你一个整数数组 arr 和一个整数值 target 。 * * 请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target 。可能会有多种方案,请你返回满足要求的两个子数组长度和的 最小值 。 * * 请返回满足要求的最小长度和,如果无法找到这样的两个子数组,请返回 -1 。 * * * * 示例 1: * * 输入:arr = [3,2,2,4,3], target = 3 * 输出:2 * 解释:只有两个子数组和为 3 ([3] 和 [3])。它们的长度和为 2 。 * * * 示例 2: * * 输入:arr = [7,3,4,7], target = 7 * 输出:2 * 解释:尽管我们有 3 个互不重叠的子数组和为 7 ([7], [3,4] 和 [7]),但我们会选择第一个和第三个子数组,因为它们的长度和 2 * 是最小值。 * * * 示例 3: * * 输入:arr = [4,3,2,6,2,3,4], target = 6 * 输出:-1 * 解释:我们只有一个和为 6 的子数组。 * * * 示例 4: * * 输入:arr = [5,5,4,4,5], target = 3 * 输出:-1 * 解释:我们无法找到和为 3 的子数组。 * * * 示例 5: * * 输入:arr = [3,1,1,1,5,1,2,1], target = 3 * 输出:3 * 解释:注意子数组 [1,2] 和 [2,1] 不能成为一个方案因为它们重叠了。 * * * * * 提示: * * * 1 <= arr.length <= 10^5 * 1 <= arr[i] <= 1000 * 1 <= target <= 10^8 * * */.
No description provided by the author
No description provided by the author
No description provided by the author
* @lc app=leetcode.cn id=464 lang=golang * * [464] 我能赢吗 * * https://leetcode.cn/problems/can-i-win/description/ * * algorithms * Medium (40.80%) * Likes: 537 * Dislikes: 0 * Total Accepted: 40.5K * Total Submissions: 99.2K * Testcase Example: '10\n11' * * 在 "100 game" 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和 达到或超过  100 * 的玩家,即为胜者。 * * 如果我们将游戏规则改为 “玩家 不能 重复使用整数” 呢? * * 例如,两个玩家可以轮流从公共整数池中抽取从 1 到 15 的整数(不放回),直到累计整数和 >= 100。 * * 给定两个整数 maxChoosableInteger (整数池中可选择的最大数)和 desiredTotal(累计和),若先出手的玩家能稳赢则返回 * true ,否则返回 false 。假设两位玩家游戏时都表现 最佳 。 * * * * 示例 1: * * * 输入:maxChoosableInteger = 10, desiredTotal = 11 * 输出:false * 解释: * 无论第一个玩家选择哪个整数,他都会失败。 * 第一个玩家可以选择从 1 到 10 的整数。 * 如果第一个玩家选择 1,那么第二个玩家只能选择从 2 到 10 的整数。 * 第二个玩家可以通过选择整数 10(那么累积和为 11 >= desiredTotal),从而取得胜利.
No description provided by the author
* @lc app=leetcode.cn id=62 lang=golang * * [62] 不同路径 * * https://leetcode.cn/problems/unique-paths/description/ * * algorithms * Medium (67.91%) * Likes: 1957 * Dislikes: 0 * Total Accepted: 710.1K * Total Submissions: 1M * Testcase Example: '3\n7' * * 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 * * 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 * * 问总共有多少条不同的路径? * * * * 示例 1: * * * 输入:m = 3, n = 7 * 输出:28 * * 示例 2: * * * 输入:m = 3, n = 2 * 输出:3 * 解释: * 从左上角开始,总共有 3 条路径可以到达右下角。 * 1.
* @lc app=leetcode.cn id=64 lang=golang * * [64] 最小路径和 * * https://leetcode.cn/problems/minimum-path-sum/description/ * * algorithms * Medium (69.85%) * Likes: 1619 * Dislikes: 0 * Total Accepted: 545.9K * Total Submissions: 781.2K * Testcase Example: '[[1,3,1],[1,5,1],[4,2,1]]' * * 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 * * 说明:每次只能向下或者向右移动一步。 * * * * 示例 1: * * * 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] * 输出:7 * 解释:因为路径 1→3→1→1→1 的总和最小。 * * * 示例 2: * * * 输入:grid = [[1,2,3],[4,5,6]] * 输出:12 * * * * * 提示: * * * m == grid.length * n == grid[i].length * 1 <= m, n <= 200 * 0 <= grid[i][j] <= 200 * * */.
* @lc app=leetcode.cn id=70 lang=golang * * [70] 爬楼梯 * * https://leetcode.cn/problems/climbing-stairs/description/ * * algorithms * Easy (54.05%) * Likes: 2845 * Dislikes: 0 * Total Accepted: 1.1M * Total Submissions: 2M * Testcase Example: '2' * * 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 * * 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? * * * * 示例 1: * * * 输入:n = 2 * 输出:2 * 解释:有两种方法可以爬到楼顶。 * 1.
* @lc app=leetcode.cn id=714 lang=golang * * [714] 买卖股票的最佳时机含手续费 * * https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/description/ * * algorithms * Medium (76.14%) * Likes: 1028 * Dislikes: 0 * Total Accepted: 255K * Total Submissions: 334.9K * Testcase Example: '[1,3,2,8,4,9]\n2' * * 给定一个整数数组 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 * * 示例 2: * * * 输入:prices = [1,3,7,5,10,3], fee = 3 * 输出:6 * * * * * 提示: * * * 1 <= prices.length <= 5 * 10^4 * 1 <= prices[i] < 5 * 10^4 * 0 <= fee < 5 * 10^4 * * */.
* @lc app=leetcode.cn id=72 lang=golang * * [72] 编辑距离 * * https://leetcode.cn/problems/edit-distance/description/ * * algorithms * Medium (62.80%) * Likes: 3243 * Dislikes: 0 * Total Accepted: 426K * Total Submissions: 678.4K * Testcase Example: '"horse"\n"ros"' * * 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数  。 * * 你可以对一个单词进行如下三种操作: * * * 插入一个字符 * 删除一个字符 * 替换一个字符 * * * * * 示例 1: * * * 输入:word1 = "horse", word2 = "ros" * 输出:3 * 解释: * horse -> rorse (将 'h' 替换为 'r') * rorse -> rose (删除 'r') * rose -> ros (删除 'e') * * * 示例 2: * * * 输入:word1 = "intention", word2 = "execution" * 输出:5 * 解释: * intention -> inention (删除 't') * inention -> enention (将 'i' 替换为 'e') * enention -> exention (将 'n' 替换为 'x') * exention -> exection (将 'n' 替换为 'c') * exection -> execution (插入 'u') * * * * * 提示: * * * 0 <= word1.length, word2.length <= 500 * word1 和 word2 由小写英文字母组成 * * */.
* @lc app=leetcode.cn id=746 lang=golang * * [746] 使用最小花费爬楼梯 * * https://leetcode.cn/problems/min-cost-climbing-stairs/description/ * * algorithms * Easy (65.92%) * Likes: 1420 * Dislikes: 0 * Total Accepted: 384.5K * Total Submissions: 583.3K * Testcase Example: '[10,15,20]' * * 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 * * 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 * * 请你计算并返回达到楼梯顶部的最低花费。 * * * * 示例 1: * * * 输入:cost = [10,15,20] * 输出:15 * 解释:你将从下标为 1 的台阶开始。 * - 支付 15 ,向上爬两个台阶,到达楼梯顶部。 * 总花费为 15 。 * * * 示例 2: * * * 输入:cost = [1,100,1,1,1,100,1,1,100,1] * 输出:6 * 解释:你将从下标为 0 的台阶开始。 * - 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。 * - 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。 * - 支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。 * - 支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。 * - 支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。 * - 支付 1 ,向上爬一个台阶,到达楼梯顶部。 * 总花费为 6 。 * * * * * 提示: * * * 2 <= cost.length <= 1000 * 0 <= cost[i] <= 999 * * */.
* @lc app=leetcode.cn id=931 lang=golang * * [931] 下降路径最小和 * * https://leetcode.cn/problems/minimum-falling-path-sum/description/ * * algorithms * Medium (67.54%) * Likes: 327 * Dislikes: 0 * Total Accepted: 94.3K * Total Submissions: 139.6K * Testcase Example: '[[2,1,3],[6,5,4],[7,8,9]]' * * 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 * * 下降路径 * 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 * (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1) * 。 * * * * 示例 1: * * * * * 输入:matrix = [[2,1,3],[6,5,4],[7,8,9]] * 输出:13 * 解释:如图所示,为和最小的两条下降路径 * * * 示例 2: * * * * * 输入:matrix = [[-19,57],[-40,-5]] * 输出:-59 * 解释:如图所示,为和最小的下降路径 * * * * * 提示: * * * n == matrix.length == matrix[i].length * 1 <= n <= 100 * -100 <= matrix[i][j] <= 100 * * */.