Dynamic Programming
liujunlovecs
这个作者很懒,什么都没留下…
展开
-
Unique Binary Search Trees
public class Solution { public int numTrees(int n) { int[] num = new int [n + 1]; num[0] = 1; num[1] = 1; for (int i = 2; i <= n; i++) { for原创 2015-07-27 18:02:49 · 216 阅读 · 0 评论 -
Triangle
DP问题 + 滚动数组 public class Solution { public int minimumTotal(List> triangle) { if (triangle == null || triangle.size() == 0) { return -1; } int length原创 2015-08-01 09:07:04 · 286 阅读 · 0 评论 -
Maximum Product Subarray
DP + 滚动矩阵 public class Solution { public int maxProduct(int[] nums) { if (nums == null || nums.length == 0) { return -1; } int result = nums[0];原创 2015-08-01 13:50:14 · 203 阅读 · 0 评论 -
Leetcode#32||Longest Valid Parentheses
public class Solution { public int longestValidParentheses(String s) { if (s == null || s.length() < 2) { return 0; } int len = s.length(); int原创 2015-08-14 16:28:28 · 272 阅读 · 0 评论 -
Leetcode#53||Maximum Subarray
public class Solution { public int maxSubArray(int[] nums) { if (nums == null || nums.length == 0) { return 0; } int length = nums.length;原创 2015-08-17 10:21:32 · 210 阅读 · 0 评论 -
edit distance
public class Solution { public int minDistance(String word1, String word2) { int len1 = word1.length(); int len2 = word2.length(); int[][] f = new int[len1 + 1][le原创 2015-08-04 18:11:13 · 250 阅读 · 0 评论 -
Leetcode#64||Minimum Path Sum
public class Solution { public int minPathSum(int[][] grid) { if (grid == null || grid.length == 0 || grid[0].length == 0) { return -1; } int m = grid.原创 2015-08-18 11:32:37 · 267 阅读 · 0 评论 -
Leetcode#62||Unique Paths
public class Solution { public int uniquePaths(int m, int n) { if (m < 1 || n < 1) { return 0; } int[] paths = new int[n]; for (int j原创 2015-08-18 11:13:34 · 299 阅读 · 0 评论 -
Leetcode#63||Unique Paths II
public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { if (obstacleGrid == null || obstacleGrid.length == 0 || obstacleGrid[0].length ==0) { return原创 2015-08-18 11:23:30 · 233 阅读 · 0 评论 -
Leetcode#70||Climbing Stairs
public class Solution { public int climbStairs(int n) { if (n <= 0) { return 0; } else if (n == 1) { return 1; } int i = 1;原创 2015-08-18 15:44:09 · 283 阅读 · 0 评论 -
Best Time to Buy and Sell Stock IV
Out of Memory Error public class Solution { public int maxProfit(int k, int[] prices) { if (prices == null || prices.length < 2 || k < 1) { return 0; } int le原创 2015-08-06 13:42:41 · 287 阅读 · 0 评论 -
Leetcode#72||Edit Distance
public class Solution { public int minDistance(String word1, String word2) { int m = word1.length(); int n = word2.length(); int[][] dist = new int[m + 1][n + 1];原创 2015-08-18 18:05:44 · 247 阅读 · 0 评论 -
Unique Binary Search Tree II
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution {原创 2015-08-01 14:22:54 · 262 阅读 · 0 评论 -
Maximal Square
利用滚动矩阵节省内存。 public class Solution { public int maximalSquare(char[][] matrix) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return 0; }原创 2015-07-31 10:57:26 · 209 阅读 · 0 评论 -
Unique Paths
public class Solution { public int uniquePaths(int m, int n) { if (m < n) { int temp = m; m = n; n = temp; } int[] path = new i原创 2015-07-30 07:46:53 · 218 阅读 · 0 评论 -
House Robber II
public class Solution { public int rob(int[] nums) { if (nums == null || nums.length == 0) { return 0; } if (nums.length == 1) { return num原创 2015-07-27 17:26:56 · 241 阅读 · 0 评论 -
Palindrome Partitioning II
public class Solution { public int minCut(String s) { if (s == null || s.length() == 0) { return 0; } int length = s.length(); boolean原创 2015-08-08 07:45:57 · 218 阅读 · 0 评论 -
Interleaving String
public class Solution { public boolean isInterleave(String s1, String s2, String s3) { if (s1 == null || s2 == null || s3 == null) { return false; } in原创 2015-08-07 20:02:44 · 216 阅读 · 0 评论 -
Climbing Stairs
Fibonacci数列,典型的DP问题。若使用递归求解,会超时(TLE)。 Dynamic Programming 状态方程 : f ( n ) = f ( n - 1 ) + f ( n - 2 ) (n >= 3) public class Solution { public int climbStairs(int n) { if (n <= 0) {原创 2015-07-27 17:48:22 · 223 阅读 · 0 评论 -
House Robber
public class Solution { public int rob(int[] nums) { if (nums == null || nums.length == 0) { return 0; } if (nums.length == 1) { return num原创 2015-07-27 17:29:00 · 260 阅读 · 0 评论 -
Best Time To Buy and Sell Stock
public class Solution { public int maxProfit(int[] prices) { int profit = 0; if (prices == null || prices.length < 2) { return profit; }原创 2015-07-28 09:16:19 · 211 阅读 · 0 评论 -
Longest Valid Parentheses
public class Solution { public int longestValidParentheses(String s) { if (s == null || s.length() < 2) { return 0; } int length = s.length();原创 2015-08-07 19:29:55 · 206 阅读 · 0 评论 -
Dungeon Game
public class Solution { public int calculateMinimumHP(int[][] dungeon) { int row = dungeon.length; int col = dungeon[0].length; int[][] health = new int[row][col];原创 2015-08-08 09:18:13 · 264 阅读 · 0 评论 -
Minimum Path Sum
public class Solution { public int minPathSum(int[][] grid) { if (grid == null || grid.length == 0 || grid[0].length == 0) { return -1; } int row = gri原创 2015-07-29 15:53:41 · 239 阅读 · 0 评论 -
Maximum Subarray
public class Solution { public int maxSubArray(int[] nums) { if (nums == null) { return -1; } int result = Integer.MIN_VALUE; int sum = 0;原创 2015-07-29 15:31:52 · 208 阅读 · 0 评论 -
Unique Path II
同Leetcode No.64 Minimum Path一样,可以使用滚动矩阵,来减小Space Complexity。 public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { if (obstacleGrid == null || obstacleGrid.l原创 2015-07-29 16:14:43 · 322 阅读 · 0 评论 -
Maximal Rectangle
public class Solution { public int maximalRectangle(char[][] matrix) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return 0; } int row原创 2015-08-07 10:34:16 · 338 阅读 · 0 评论