leet动态规划
ldd儆儆
这个作者很懒,什么都没留下…
展开
-
leet343整数拆分
public int integerBreak(int n) { if(n <= 3) return n - 1; int a = n / 3, b = n % 3; if(b == 0) return (int)Math.pow(3, a); if(b == 1) return (int)Math.pow(3, a - 1) * 4; return...原创 2020-03-20 14:26:38 · 246 阅读 · 0 评论 -
leet376:摆动序列
官方给的贪心算法public int wiggleMaxLength2(int[] nums) {//0ms if (nums.length < 2) return nums.length; int prevdiff = nums[1] - nums[0]; int count = prevdiff != 0 ? 2 : 1; for (i...原创 2019-12-25 10:57:15 · 112 阅读 · 0 评论 -
leet5:5. 最长回文子串
动态规划public static String longestPalindrome(String s) { int len = s.length(); if (len <= 1) { return s; } int longestPalindrome = 1; String longestPalindromeStr = s.subs...原创 2019-12-23 16:06:26 · 157 阅读 · 0 评论 -
leet14:最长公共前缀
public static String longestCommonPrefix(String[] strs) { if(strs ==null||strs.length ==0)return""; for(int i = 0; i<strs[0].length(); i++) { char c = strs[0].charAt(i); for (int j = ...原创 2019-12-19 16:58:38 · 107 阅读 · 0 评论 -
leet322:零钱兑换
public static int coinChange(int[] coins, int amount) { // 动态规划 int[] memo = new int[amount + 1]; Arrays.fill(memo, amount + 1); memo[0] = 0; for (int i = 1; i <= amount; i++) ...原创 2019-12-19 15:35:51 · 99 阅读 · 0 评论 -
leet1262:可被三整除的最大和
这段代码我确实是一知半解,但是很服这段代码使用了长度为3地dp2迭代之后赋给dppublic static int maxSumDivThree(int[] nums) { int [] dp = {0,Integer.MIN_VALUE,Integer.MIN_VALUE}; for(int num:nums){ int [] dp2 = new int[3]...原创 2019-12-19 14:02:06 · 168 阅读 · 0 评论 -
leet64:最小路径和
public static int minPathSum(int[][] grid) { int[][] dp = new int[grid.length][grid[0].length]; for (int i = grid.length - 1; i >= 0; i--) { for (int j = grid[0].length - 1; j >...原创 2019-12-18 17:09:10 · 105 阅读 · 0 评论 -
leet63:不同路径 II
//0mspublic static int uniquePathsWithObstacles(int[][] obstacleGrid) { int rowLen = obstacleGrid.length; int rankLen = obstacleGrid[0].length;; int [][] dp = new int [rowLen][rankLen];...原创 2019-12-18 16:57:33 · 104 阅读 · 0 评论 -
leet62:不同路径
public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; for (int i = 0; i < n; i++) dp[0][i] = 1; for (int i = 0; i < m; i++) dp[i][0] = 1; for (int i = 1; i <...原创 2019-12-18 16:44:03 · 106 阅读 · 0 评论 -
leet746:使用最小花费爬楼梯
public static int minCostClimbingStairs(int[] cost) { int len = cost.length; int [] dp = new int[cost.length]; dp[0] = cost[0]; dp[1] = cost[1]; for (int i = 2; i <len ; i++) {...原创 2019-12-18 16:19:04 · 112 阅读 · 0 评论 -
leet303:区域和检索 - 数组不可变
暴力法private int [] nums;public static void main(String[] args) { int [] nums = {-2, 0, 3, -5, 2, -1}; Demo2 demo2 =new Demo2(nums); System.out.println(demo2.sumRange(0,5));}public Demo...原创 2019-12-18 15:53:30 · 83 阅读 · 0 评论 -
leet1025:除数博弈
动态规划public boolean divisorGame(int N) { boolean[] dp = new boolean[N + 1]; dp[1] = false; for (int i = 2; i <= N; i++) { for (int j = 1; j < i; j++) { if (i % j...原创 2019-12-18 15:16:46 · 108 阅读 · 0 评论 -
leet392:判断子序列
public static boolean isSubsequence(String s, String t) { int index = 0,i = 0; while(index < s.length() && t.indexOf(s.charAt(index),i) >= i){ i = t.indexOf(s.charAt(ind...原创 2019-12-18 14:57:01 · 101 阅读 · 0 评论 -
leet70:爬楼梯
递归public int climbStairs(int n) { int memo[] = new int[n + 1]; return climb_Stairs(0, n, memo);}public int climb_Stairs(int i, int n, int memo[]) { if (i > n) { return 0; ...原创 2019-12-18 14:31:13 · 106 阅读 · 0 评论 -
leet53:最大子序和
public static int maxSubArray(int[] nums) { int sum=0,max=Integer.MIN_VALUE; for (int num:nums) { sum = Math.max(0, sum); sum+=num; max=Math.max(max,sum); } ret...原创 2019-12-16 19:09:08 · 120 阅读 · 0 评论