由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一个leetcode OJ问题
相关主题
java的基本问题再上到题
3sum on LeetCode OJ问个Java的HashSet.contains的问题
为什么oj.leetcode上面的triangle那道题总是超时lintcode 上的 Count of Smaller Number before itself
leetcode 4sum N^3解法有时Time Limit Exceeded有时又能通过问个面试题
Insert Interval large case测试没过,怎么优化?twoSum
求个4sum的算法求助各位大牛:LeetCode的Decode Ways
find Kth Largest Element 有没有更简化的解法问一个reverse int的问题
请教下3sum为撒超时Find Median Of Two Sorted Arrays
相关话题的讨论汇总
话题: min话题: int话题: arraylist话题: sum话题: return
进入JobHunting版参与讨论
1 (共1页)
m***n
发帖数: 9
1
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).
public class Solution {
int min=Integer.MAX_VALUE;
public int minimumTotal(ArrayList> triangle) {
// Start typing your Java solution below
// DO NOT write main() function
if(triangle.size()==0) return 0;
return dfs(triangle,1,triangle.get(0).get(0),0);
}
public int dfs(ArrayList> t,int l,int sum,int i) {
if(l==t.size()) return sum;
int left=dfs(t,l+1,sum+t.get(l).get(i),i);
min=left int right=dfs(t,l+1,sum+t.get(l).get(i+1),i+1);
min=right return min;
//return left }
}
刚开始我是想用一个global min去记录最小值然后最后返回。可是这个一直没通过一个
test case:[[-1],[2,3],[1,-1,-3]]
它说我输出-4,应该是-1。然后我就查了半天,不知道怎么会输出-4,然后我自己run了
一下给的相同的test input,结果输出的是-1.。。。。搞不懂怎么oj说我输出-4
后来发现根本没必要这个min变量,可以直接return left和right中最小的,然后通过
了小test case.
我没发现有min和没min本质上的不同。
请教各位大神。谢谢
g****o
发帖数: 547
2
leetcode不是每次都重新创建对象
public class Solution {
int min=Integer.MAX_VALUE;
public int minimumTotal(ArrayList> triangle) {
// Start typing your Java solution below
// DO NOT write main() function
min=Integer.MAX_VALUE;//add this line
if(triangle.size()==0) return 0;
return dfs(triangle,1,triangle.get(0).get(0),0);
}
public int dfs(ArrayList> t,int l,int sum,int i) {
if(l==t.size()) return sum;
int left=dfs(t,l+1,sum+t.get(l).get(i),i);
min=left int right=dfs(t,l+1,sum+t.get(l).get(i+1),i+1);
min=right return min;
//return left }
}
E*****m
发帖数: 25615
3
你這個時間會超過, 必須用 DP 才行。

【在 g****o 的大作中提到】
: leetcode不是每次都重新创建对象
: public class Solution {
: int min=Integer.MAX_VALUE;
: public int minimumTotal(ArrayList> triangle) {
: // Start typing your Java solution below
: // DO NOT write main() function
: min=Integer.MAX_VALUE;//add this line
: if(triangle.size()==0) return 0;
: return dfs(triangle,1,triangle.get(0).get(0),0);
: }

E*****m
发帖数: 25615
4
DP 很容易寫
public class Solution {
public int minimumTotal(ArrayList> triangle) {
// Start typing your Java solution below
// DO NOT write main() function
int[] sum=new int[triangle.size()];

for (int i=0;i sum[i]=triangle.get(triangle.size()-1).get(i);
for (int i=triangle.size()-2;i>=0;i--){
ArrayList cur=triangle.get(i);
for (int j=0;j<=i;j++)
sum[j]=cur.get(j)+Math.min(sum[j], sum[j+1]);
}
return sum[0];

}

}
c***d
发帖数: 26
5
把 min=Integer.MAX_VALUE;加到minimumTotal开头。
我一般不用instance variable.

【在 m***n 的大作中提到】
: 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).

1 (共1页)
进入JobHunting版参与讨论
相关主题
Find Median Of Two Sorted ArraysInsert Interval large case测试没过,怎么优化?
n queens II ,, 時間复杂度是多少?thank求个4sum的算法
请教一道算法题find Kth Largest Element 有没有更简化的解法
a problem from leetcode: high efficiency algorithm for combinations problem请教下3sum为撒超时
java的基本问题再上到题
3sum on LeetCode OJ问个Java的HashSet.contains的问题
为什么oj.leetcode上面的triangle那道题总是超时lintcode 上的 Count of Smaller Number before itself
leetcode 4sum N^3解法有时Time Limit Exceeded有时又能通过问个面试题
相关话题的讨论汇总
话题: min话题: int话题: arraylist话题: sum话题: return