提交 b8d2f7ed 编写于 作者: L liu13

20190307

上级 d3e07b15
package code;
/*
* 303. Range Sum Query - Immutable
* 题意:i到j的和
* 难度:Easy
* 分类:Dynamic Programming
* 思路:
* Tips:Bingo!
*/
public class lc303 {
class NumArray {
int[] arr;
public NumArray(int[] nums) {
arr = nums;
for(int i=1; i<arr.length; i++){
arr[i] = arr[i-1]+arr[i];
}
}
public int sumRange(int i, int j) {
return i==0? arr[j] : arr[j]-arr[i-1];
}
}
/**
* Your NumArray object will be instantiated and called as such:
* NumArray obj = new NumArray(nums);
* int param_1 = obj.sumRange(i,j);
*/
}
package code;
/*
* 746. Min Cost Climbing Stairs
* 题意:上楼梯,变了一下形
* 难度:Easy
* 分类:Array, Dynamic Programming
* 思路:
* Tips:Bingo!
*/
public class lc746 {
public int minCostClimbingStairs(int[] cost) {
if(cost.length==1) return cost[0];
int dp1 = cost[0], dp2 = cost[1], dp3 = Integer.MAX_VALUE;
for(int i=2; i<cost.length; i++){
dp3 = Math.min(dp1+cost[i], dp2+cost[i]);
dp1 = dp2;
dp2 = dp3;
}
return Math.min(dp1,dp2); //注意下返回值,还要比较一下
}
}
package code;
/*
* 877. Stone Game
* 题意:两个人拿石头堆,每次只能从最左边或最右边拿
* 难度:Medium
* 分类:Math, Dynamic Programming, Minimax
* 思路:之前做过有印象,先拿的人一定赢的。
* dp的思路需要借鉴一下的, dp[i][j] 表示数组 i~j 的最优解
* 向两边拓展的dp, 用一个变量表示 size 这个dp。想想一下三角形的区域是怎么一步步被填满的
* 拿了piles[i], 则dp[i+1][j]就被另一个人拿了,结果是 piles[i] - dp[i + 1][j]
* 拿了piles[j], 则dp[i][j-1]就被另一个人拿了,结果是 piles[j] - dp[i][j - 1]
* Tips:
*/
public class lc877 {
public boolean stoneGame(int[] piles) {
return true;
}
public boolean stoneGame2(int[] piles) {
int[][] dp = new int[piles.length][piles.length];
for (int i = 0; i < piles.length ; i++) dp[i][i] = piles[i]; //最后是第二个人拿的,用符号
for (int size = 1; size < piles.length ; size++) { //外循环是 size
for (int i = 0; i+size < piles.length ; i++) { //size<len
dp[i][i+size] = Math.max(piles[i]-dp[i+1][i+size], piles[i+size]-dp[i][i+size-1]);
}
}
return dp[0][piles.length-1]>0;
}
}
......@@ -157,6 +157,7 @@ LeetCode 指南
| 297 [Java](./code/lc297.java)
| 300 [Java](./code/lc300.java)
| 301 [Java](./code/lc301.java)
| 303 [Java](./code/lc303.java)
| 309 [Java](./code/lc309.java)
| 312 [Java](./code/lc312.java)
| 315 [Java](./code/lc315.java)
......@@ -196,4 +197,6 @@ LeetCode 指南
| 617 [Java](./code/lc617.java)
| 621 [Java](./code/lc621.java)
| 647 [Java](./code/lc647.java)
| 746 [Java](./code/lc746.java)
| 771 [Java](./code/lc771.java)
| 877 [Java](./code/lc877.java)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册