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

网站邮箱设置如何快速提升自己

网站邮箱设置,如何快速提升自己,帝国cms做下载网站,依法惩治网络暴力犯罪算法思想与代码详解 这段代码采用的是**动态规划(Dynamic Programming)**的思想,用来解决“120. 三角形最小路径和”问题。动态规划通过将问题分解成更小的子问题,并通过保存子问题的解来避免重复计算,从而提高效率。…

在这里插入图片描述

算法思想与代码详解

这段代码采用的是**动态规划(Dynamic Programming)**的思想,用来解决“120. 三角形最小路径和”问题。动态规划通过将问题分解成更小的子问题,并通过保存子问题的解来避免重复计算,从而提高效率。


算法核心思路
  1. 从底向上计算(Bottom-Up Approach)

    • 因为我们要求从顶点到底边的最小路径和,可以从底边开始,逐步向上计算每一层的最优解。
    • 每个位置的最小路径和,取决于当前值和下一层两个可能的相邻路径值中的较小者。
  2. 状态表示(DP数组)

    • 使用一个一维数组 dp 来保存“从当前层到底边的最小路径和”。
    • dp[j] 表示从当前层位置 j 到底边的最小路径和。
  3. 状态转移方程

    • 对于某一层的节点 triangle[i][j],它的最小路径和为:
      [
      dp[j] = \min(dp[j], dp[j + 1]) + triangle[i][j]
      ]
    • dp[j] 表示当前位置 j 往下的最小路径,dp[j+1] 表示下一个位置 j+1 往下的最小路径。
  4. 最终结果

    • 计算完成后,dp[0] 即为从三角形顶点到底边的最小路径和。

代码解读
public int minimumTotal(List<List<Integer>> triangle) {int n = triangle.size();  // 三角形的层数int[] dp = new int[n];    // 用一维数组保存动态规划结果// 初始化:将 dp 数组赋值为最后一层的值for (int i = 0; i < n; i++) {dp[i] = triangle.get(n - 1).get(i);}// 从倒数第二层开始,向上计算每层的最小路径和for (int i = n - 2; i >= 0; i--) {for (int j = 0; j <= i; j++) {// 动态规划状态转移:当前点的最小路径和dp[j] = Math.min(dp[j], dp[j + 1]) + triangle.get(i).get(j);}}// 最终答案存储在 dp[0]return dp[0];
}

运行流程

以输入 triangle = [[2], [3, 4], [6, 5, 7], [4, 1, 8, 3]] 为例:

  1. 初始化

    • 将最后一层 [4, 1, 8, 3] 赋值到 dp 数组中:
      [
      dp = [4, 1, 8, 3]
      ]
  2. 从倒数第二层开始计算

    • 第 3 层 ([6, 5, 7]):

      • ( dp[0] = \min(4, 1) + 6 = 7 )
      • ( dp[1] = \min(1, 8) + 5 = 6 )
      • ( dp[2] = \min(8, 3) + 7 = 10 )
        更新后:
        [
        dp = [7, 6, 10, 3]
        ]
    • 第 2 层 ([3, 4]):

      • ( dp[0] = \min(7, 6) + 3 = 9 )
      • ( dp[1] = \min(6, 10) + 4 = 10 )
        更新后:
        [
        dp = [9, 10, 10, 3]
        ]
    • 第 1 层 ([2]):

      • ( dp[0] = \min(9, 10) + 2 = 11 )
        更新后:
        [
        dp = [11, 10, 10, 3]
        ]
  3. 最终结果

    • 返回 dp[0],即最小路径和为 11

时间和空间复杂度
  1. 时间复杂度

    • 外层循环从底层到顶层,共 (n-1) 次。
    • 内层循环每层最多运行 (i+1) 次,整体为 (O(n^2))。
    • 总时间复杂度: (O(n^2))。
  2. 空间复杂度

    • 使用了一个一维数组 dp,大小为 (n)。
    • 总空间复杂度: (O(n))。

总结

这段代码通过动态规划的思想,从底向上逐层计算路径和,用一个一维数组优化了空间开销,避免了重复计算,具有较高的效率,适用于求解此类逐层递归累加的问题。

java 实现

class Solution {public int minimumTotal(List<List<Integer>> triangle) {int n = triangle.size();int[] dp = new int[n];for(int i = 0; i < n; i++) {dp[i] = triangle.get(n - 1).get(i);}for(int i = n - 2; i >= 0; i--) { // i 自底向上for(int j = 0; j <= i; j++) { // j 对当前行从左到右遍历, 当 j == i 时,该行的dp[i]值得以确定dp[j] = Math.min(dp[j], dp[j + 1]) + triangle.get(i).get(j);}}return dp[0];}
}
http://www.fp688.cn/news/161129.html

相关文章:

  • 优化网站有哪些方法黑龙江今日新闻
  • 手机做服务器搭网站seo公司哪家好
  • 12306网站建设花了多少钱百度热度
  • 建设工程合同交底的内容包括百度关键词优化培训
  • 点样做网站龙岗网站推广
  • 如何建立一个外贸网站宁波seo外包
  • 编写网站策划方案竞价推广什么意思
  • 福州建设发展集团网站活动推广朋友圈文案
  • 虫部落导航网站怎么做搜索引擎免费下载
  • 百度竞价推广开户多少钱网站排名优化系统
  • dw个人网站制作友情链接的获取途径有哪些
  • 自己做的网站怎么搜不到怎么投放网络广告
  • 做外贸网站要多少钱千博企业网站管理系统
  • 邢台123最新求职招聘信息seo优化便宜
  • 彩票网站开发极云怎么弄一个自己的网址
  • 望京做网站的公司哪家好如何推广普通话
  • 网站ar怎么做百度竞价排名榜
  • 大连做网站billionseo网址创建
  • 免费注册网站免登录网络推广公司有多少家
  • 珠海网站建设王道下拉強百度导航官网
  • 如何网站增加域名反向链接查询
  • 自己做的网站怎么在百度可以查到seo 优化案例
  • 周到的做pc端网站免费网站制作
  • 淘宝客网站开发教程郑州粒米seo外包
  • 怎么做网页 网站制作aso优化推广
  • 可以做游戏的网站渠道推广有哪些方式
  • 重庆 建网站网站软文代写
  • 用爱站工具包如何做网站地图培训方案
  • 石家庄企业网站建设竞价推广营销
  • 网站正在建设中中文模板厦门seo搜索排名