dynamic-programming 关于dynamic-programming:Y-分钟速成-Dynamic-Programming 动静布局是一种实用的技巧,它能够用来解决一系列特定问题。它的思路很简略,如果你对某个给定的输出解决了一个问题,那么你能够保留已有信息,以防止反复计…
java leetcode472-Concatenated-Words Given a list of words (without duplicates), please write a program that returns all concatenated words in the given list of words.A concatenated word is defined as a string that is comprised entirely of at least two shorter words in the given array.
java leetcode446-Arithmetic-Slices-II-Subsequence 从一个无序的整数数组中,找到所有等差子数列的数量。这里需要注意,等差子数列要求从原数组中找出Pk个下标的元素,其中P0 < P1 < P2… < Pk,且满足A[P1]-A[P0] = A[P2] – A[P1] … = A[Pk]-A[Pk-1]。
java leetcode467-Unique-Substrings-in-Wraparound-String 假设存在一个从a-z26个字母无限循环的字符串s,现在输入一个字符串p,问该字符串有多少个子字符串在s中循环出现?
java leetcode474-Ones-and-Zeroes 先是用深度优先遍历的思想进行了实现,结果很明显是超时了。接着采用动态规划的思想,其实这题就是背包问题的一个演化。假设已知道m个0和n个1能够从数组中前i个元素最多拼成多少个元素,则m个0和n个1能够从数组中前i+1个元素能够拼成最多的元素个数有如下两个场景:
无分类 明白动态规划Dijkstra方法的Python实现和问题的解决步骤译 原作者:金子冴校阅:内野良一翻译:叶子原文链接 目录 什么是动态规划(Dynamic Programming) 例题:用Dijkstra的方法解决最短路径问题(Python实现) 使用动态规划解决问题的步骤 参考 什么是动态规划(Dynamic Pro…
java leetcode410-Split-Array-Largest-Sum 将一个长度为n的正整数数组分割为m个非空的连续子数组,并分别计算每个子数组中所有元素的和。求一种分割方式,使得该分割方式生成的最大子数组和为所有分割方式中最小的。
java leetcode376-Wiggle-Subsequence 扭动序列是指数组中的相邻两个元素的差保证严格的正负交替,如[1,7,4,9,2,5]数组中相邻两个元素的差为6,-3,5,-7,3,满足扭动序列的要求。现在要求从一个数组中,找到长度最长的扭动子序列,并返回其长度。
java leetcode403. Frog Jump 假设有一只青蛙需要过河,河中会有一些石子,青蛙必须踩在石头上才算成功。石头的位置用整数数组来表示。青蛙的行走规则为:假设上一次青蛙跳了k格,则当前青蛙只能跳k-1或k或k+1格,且青蛙只能向前跳,不能向后跳。
java leetcode416. Partition Equal Subset Sum 这和0-1背包问题是完全一样的,01背包问题是指假设有n个物品,每个物品中为weight[i],假设背包的承重为k,问如何选择物品使得背包中的承重最大。而这里的问题等价于,有n个物品,每个物品承重为input[i],问如何…