当前位置: 首页 > news >正文

[leetcode]64_最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步示例 1:
1 3 1
1 5 1
4 2 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

解题方法:【动态规划】

二维数组:n * m
递推公式:
dp[i][j]表示从"Start"走到(i,j)位置的最小路径和
dp[i][j] = min(dp[i - 1][j] + grid[i][j], dp[i][j - 1] + grid[i][j])
初始化:
dp[0][0] = grid[0][0]
第一行元素的最小路径和,为从左到右元素和
for i in range(1, n):dp[0][i] = dp[0][i - 1] + grid[0][i]
第一列元素的最小路径和,为从上到下元素和
for j in range(1, m):dp[j][0] = dp[j - 1][0] + grid[j][0]

class Solution:def different_roads(self, graph):#   行数row_number = len(nums)#   列数column_number = len(graph[0]) if graph[0] else 0  #   默认输入每行的列数都相同for row in graph:if not row:continuecolumn_number = max(column_number, len(row))    #   每行的列数不同,统计最大的列数dp = [[0]* column_number for _ in range(row_number)]dp[0][0] = graph[0][0]#   初始化首行for i in range(1, column_number):dp[0][i] = dp[0][i -1] + graph[0][i]#   初始化首列for j in range(row_number):dp[j][0] = dp[j - 1][0] + graph[j][0]#   递推公式for i in range(1, row_number):for j in range(1, column_number):dp[i][j] = min(dp[i - 1][j] + graph[i][j], dp[i][j - 1] + graph[i][j])return dp[row_number - 1][column_number - 1]if __name__ == '__main__':try:nums = eval(input())solution = Solution()result = solution.different_roads(nums)print(result)except Exception as e:print(e)

仅作为代码记录,方便自学自查自纠

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 持续学习与创新能力的双重提升
  • SDKMAN!软件开发工具包管理器
  • 828华为云征文|使用Flexus X实例集成ES搜索引擎
  • 应用层 II(文件传输协议FTP)【★★】
  • 16.3 k8s容器cpu内存告警指标与资源request和limit
  • 江科大51单片机
  • 整合SpringSecurity框架经典报错
  • docker容器安装nginx
  • 【数据可视化】Arcgis api4.x 热力图、时间动态热力图、timeSlider时间滑块控件应用 (超详细、附免费教学数据、收藏!)
  • 码点和码元的区别--Unicode标准的【码点】和【码元】
  • 第十一章 【后端】商品分类管理微服务(11.4)——spring-boot-devtools
  • 详细分析uni-app中的页面路由基本知识(附Demo)
  • LeetCode 面试经典150题 67.二进制求和
  • keil的debug功能
  • shell脚本定时任务通知到钉钉
  • 【comparator, comparable】小总结
  • express + mock 让前后台并行开发
  • PAT A1017 优先队列
  • python学习笔记-类对象的信息
  • React-flux杂记
  • Spark学习笔记之相关记录
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 开源地图数据可视化库——mapnik
  • 聊聊flink的BlobWriter
  • 前端自动化解决方案
  •  一套莫尔斯电报听写、翻译系统
  • 用mpvue开发微信小程序
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • UI设计初学者应该如何入门?
  • ​补​充​经​纬​恒​润​一​面​
  • ​香农与信息论三大定律
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • ###项目技术发展史
  • $().each和$.each的区别
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Java数据结构)ArrayList
  • (二)原生js案例之数码时钟计时
  • (论文阅读11/100)Fast R-CNN
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET处理HTTP请求
  • .NET导入Excel数据
  • .NET命令行(CLI)常用命令
  • .net专家(张羿专栏)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @JsonFormat 和 @DateTimeFormat 的区别
  • [Android] Amazon 的 android 音视频开发文档