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

triangle java_LeetCode Triangle Java版本

题目描述:

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

For example, given the following triangle

[

[2],

[3,4],

[6,5,7],

[4,1,8,3]

]

The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

Note: Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.

题目分析:

我的思路是这样的:先用贪婪算法求出一个局部最优解,然后用深度优先算法去遍历,不断替换最优解。结果超时了。。。

代码如下:

public class Solution {

int minSum = 0;

int tempSum = 0;

int rows = 0;

List> tri;

public void deepSearch(int rowNum, int index){

List rowList = tri.get(rowNum);

tempSum += rowList.get(index);

if(rowNum == rows-1){

if(tempSum < minSum)

minSum = tempSum;

tempSum = tempSum - rowList.get(index);

return;

}

deepSearch(rowNum+1,index);

deepSearch(rowNum+1,index+1);

}

public int minimumTotal(List> triangle) {

rows = triangle.size();

if(rows == 0)

return 0;

int index = 0;

List rowList = triangle.get(0);

minSum += rowList.get(0);

for(int i=1;i

rowList = triangle.get(i);

if(rowList.get(index) <= rowList.get(index+1)){

minSum += rowList.get(index);

}

else{

minSum += rowList.get(index+1);

index = index+1;

}

}

tri = triangle;

deepSearch(0,0);

return minSum;

}

}

这个代码自我感觉写的很糟糕。写起来比较费劲,而且不是最优的解法,而且还超时了。自己太过偷懒,什么问题都想着用递归去解决。

看了别人的解法,用的DP,十分简洁,让我很想记录下来。代码如下:

public class Solution {

public int minimumTotal(List> triangle) {

for(int i = triangle.size() - 2; i >= 0; i--)

for(int j = 0; j <= i; j++)

triangle.get(i).set(j, triangle.get(i).get(j) + Math.min(triangle.get(i + 1).get(j), triangle.get(i + 1).get(j + 1)));

return triangle.get(0).get(0);

}

} 很佩服这样的代码,自己还是差很多啊。。

相关文章:

  • python用户重复输入_在Python中从用户输入中查找重复值
  • java类与类之间的类图_UML类图(Class Diagram)中类与类之间的关系及表示方式(转)
  • java按时间范围过滤_Java列表按日期过滤
  • java员工表代码_基于java+ssh员工考勤管理系统源代码
  • java返回指定json格式_java返回json格式数据
  • java字符型数据的长度_Java字符串创建和长度
  • java正则表达式笔记_java正则表达式笔记
  • java打印两个字符串_Java 按字母顺序中打印两个字符串的公共字符
  • mysql 不显示警告信息_关闭mysql不安全语句警告
  • java 加载luasocket库_使用Lua的扩展库LuaSocket用例
  • mysql5.7.13 zip win7_mysql5.7.13.zip安装教程(windows)
  • 南京三只松鼠java_又出新模式?三只松鼠南京首家品牌集合店开业
  • java抛出异常齁_解決 Elasticsearch 使用 Java High Level REST Client 時出現 NoClassDefFoundError 錯誤...
  • java高速公路系统_基于jsp的高速公路收费系统-JavaEE实现高速公路收费系统 - java项目源码...
  • initialcontext java_缺少InitialContext定义时要使用的Java运行时异常
  • co模块的前端实现
  • css布局,左右固定中间自适应实现
  • github从入门到放弃(1)
  • JavaScript 一些 DOM 的知识点
  • Mac转Windows的拯救指南
  • mysql 5.6 原生Online DDL解析
  • Python实现BT种子转化为磁力链接【实战】
  • 力扣(LeetCode)22
  • 马上搞懂 GeoJSON
  • 前端自动化解决方案
  • 如何学习JavaEE,项目又该如何做?
  • 删除表内多余的重复数据
  • 思考 CSS 架构
  • 问题之ssh中Host key verification failed的解决
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​2021半年盘点,不想你错过的重磅新书
  • #Linux(权限管理)
  • #QT(一种朴素的计算器实现方法)
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET Micro Framework初体验
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET下的多线程编程—1-线程机制概述
  • :=
  • ??javascript里的变量问题
  • @Builder用法
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [Android] Implementation vs API dependency
  • [BT]BUUCTF刷题第8天(3.26)
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [C++]类和对象【下】
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [Git 1]基本操作与协同开发
  • [ICCV2017]Neural Person Search Machines