m*n
2 楼
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本质上的不同。
请教各位大神。谢谢
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
// 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
if(l==t.size()) return sum;
int left=dfs(t,l+1,sum+t.get(l).get(i),i);
min=left
min=right
//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本质上的不同。
请教各位大神。谢谢
m*0
3 楼
我的EB2 PD:1/11/2013, 485 Received Date: July 2015.
现在EB3 current了。我有必要降级么?还是继续等?
谢谢
现在EB3 current了。我有必要降级么?还是继续等?
谢谢
g*o
5 楼
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 }
}
public class Solution {
int min=Integer.MAX_VALUE;
public int minimumTotal(ArrayList
// 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
if(l==t.size()) return sum;
int left=dfs(t,l+1,sum+t.get(l).get(i),i);
min=left
min=right
//return left
}
S*o
6 楼
看你的具体情况,如果工作稳定,也不急着用卡,等等也无所谓。要是想早拿卡将级应
该会快很多。
该会快很多。
l*d
7 楼
漏了各个学校的bookstore,大多有ipad,但货一般不多。
E*m
8 楼
你這個時間會超過, 必須用 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);
: }
【在 g****o 的大作中提到】
: leetcode不是每次都重新创建对象
: public class Solution {
: int min=Integer.MAX_VALUE;
: public int minimumTotal(ArrayList
: // 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
10 楼
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];
}
}
public class Solution {
public int minimumTotal(ArrayList
// Start typing your Java solution below
// DO NOT write main() function
int[] sum=new int[triangle.size()];
for (int i=0;i
for (int i=triangle.size()-2;i>=0;i--){
ArrayList
for (int j=0;j<=i;j++)
sum[j]=cur.get(j)+Math.min(sum[j], sum[j+1]);
}
return sum[0];
}
}
p*6
11 楼
果断降级马上绿
c*d
12 楼
把 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).
我一般不用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).
相关阅读
催绿的639表格一问employment verification letter要原件还是复印件代报绿【EB2 2015年六月第6绿】NSC 2012.7提交了485还需要延长H1b和H4吗?怎么没有vb博彩阿?律师竟然提前交了relink 的信和配偶同时RFE,材料要一起寄吗?找家庭医生打疫苗需要预约吗5月交485的都收到FP通知了吗?问一个关于relink的问题,希望明白的人说说EB2 PD 07/2010 什么时候绿啊体检过期后再体检要不要打疫苗草泥马F 家律师 还没给交 485.relink后该做什么这个月绿的节奏很怪异I-485 Processing Statistics随配偶交了485,还有必要自己公司继续办perm么?还是要做Relink的!谁能分析下EB3排期走势以前就已经交了485的EB,和第一次新交的,如果都在今天变C