
动态规划
dp小王子
讲真的,写博客好累。。。
展开
-
换钱的方法数
换钱的方法数【题目】给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张, 再给定一个整数aim代表要找的钱数,求换钱有多少种方法。【举例】arr=[5,10,25,1],aim=0。组成0元的方法有1种,就是所有面值的货币都不用。所以返回1。arr=[5,10,25,1],aim=15。组成15元的方法有6种,分别为3张5元、1张...原创 2019-01-20 23:24:07 · 150 阅读 · 0 评论 -
最小路径和
【题目】给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。public static int minPath1(int[][] m) { i...原创 2019-03-12 20:52:01 · 101 阅读 · 0 评论 -
数字字符串转换为字母组合的种数
【题目】给定一个字符串str,str全部由数组字符组成,如果str中某一个或某相邻两个字符组成的子串值在1~26之间,则这个子串可以转换为一个字母。规定“1”转换为“A",“2"转换为”B”,“3"转换为“C”…“26转换为”Z”.写一个函数,求str有多少种不同的转换结果,并返回种数。public class NumToStr { // 暴力递归 public static int num...原创 2019-03-03 17:43:21 · 699 阅读 · 0 评论 -
龙与地下城游戏问题
【题目】给定一个二维数组map,含义是一张地图,例如,如下矩阵:-2 -3 3-5 -10 10 30 -5游戏的规则如下:骑士从左上角出发,每次只能向右或向下走,最后到达右下角见到公主。地图中每个位置的值代表骑士要遭遇的事情。如果是负数,说明此处有怪兽,要让骑士损失血量。如果是非负数,代表此处有血瓶,能让骑士回血。骑士从左上角到右下角的过程中,走到任何一个位置时,血量都不能少于1....原创 2019-03-03 17:42:59 · 583 阅读 · 0 评论 -
统计和生成所有不同的二叉树
【题目】给定一个整数N,如果N<1,代表空树结构,否则代表中序遍历的结果为{1,2,3,…,N}.请返回可能的二叉树结构有多少。public class NumTrees { public static int numTree(int n) { if (n < 2) { return 1; } int[] dp = new int[n + 1]; dp[0]...原创 2019-03-03 17:42:38 · 517 阅读 · 0 评论 -
括号字符串的有效性和最长有效长度
【题目】给定一个字符串str,判断是不是整体有效的括号字符串。public class kuohaoStr { public static boolean isValid(String str) { if (str == null || str.equals("")) { return false; } int status = 0; char[] charArr = s...原创 2019-03-02 17:47:01 · 939 阅读 · 0 评论 -
数组中的最长连续序列
【题目】给定无序数组arr,返回其中最长的连续序列的长度。public class LongestConsecutive { public static int longestCon(int[] arr) { if (arr == null || arr.length == 0) { return 0; } HashMap<Integer, Integer> ma...原创 2019-03-02 17:44:55 · 209 阅读 · 0 评论 -
跳跃游戏
【题目】给定数组arr,arr[i] == k代表可以从位置i向右跳1~k个距离。比如arr[2] ==3,代表从位置2可以跳到位置3、位置4、位置5.如果从位置0出发,返回最少跳几次能跳到arr最后的位置上。【举例】arr = [3,2,3,1,1,4].arr[0] == 3, 选择跳到位置2,arr[2] == 3,可以跳到最后的位置,所以返回2.【要求】如果arr长度为N,要求实现时...原创 2019-02-25 14:36:29 · 276 阅读 · 0 评论 -
排成一条线的纸牌博弈问题
排成一条线的纸牌博弈问题【题目】给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。【举例】arr=[1,2,100,4]。开始时玩家A只能拿走1或4。如果玩家A拿走1,则排列变为[2,100,4],接下来玩家B可以拿走2或4,然后继续轮...原创 2019-01-20 23:24:32 · 336 阅读 · 0 评论 -
解码方法
【题目】一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (原创 2019-03-12 20:52:33 · 167 阅读 · 0 评论