2020年4月22日
摘要: 题目: 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 思路: 对行进行二分 程序: class Solution: def searchMatrix(self, matrix: L 阅读全文
posted @ 2020-04-22 16:24 桌子哥 阅读(655) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 思路: 进阶: 一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出 阅读全文
posted @ 2020-04-22 15:33 桌子哥 阅读(824) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 思路: 本题较简单。 程序: class Solution: def minPathSum(self, grid: List[List[int]]) 阅读全文
posted @ 2020-04-22 14:22 桌子哥 阅读(1299) 评论(0) 推荐(0) 编辑
摘要: 题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 思路: 和没有障碍思路类似,将有 阅读全文
posted @ 2020-04-22 13:27 桌子哥 阅读(1510) 评论(0) 推荐(0) 编辑
摘要: 题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 思路: 找每个位置最多的可能的情况。 与华为面试第一轮的题目类似。 程序: 阅读全文
posted @ 2020-04-22 12:27 桌子哥 阅读(1859) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。 思路: 要从下到上进行设计,从上到下进行设计会有错误。 程序: class Solution: def 阅读全文
posted @ 2020-04-22 11:59 桌子哥 阅读(566) 评论(0) 推荐(0) 编辑