算法
Josvin
这个作者很懒,什么都没留下…
展开
-
动态规划-最少硬币组合问题(Java)
问题:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元?思路代码package java_20201010;import java.util.Scanner;/** * @ Created with IntelliJ IDEA. * @ClassName Test6 * @Description * @Author by小房 * @Date 2020/10/10 20:32 */public class Test6 { /* * 假设原创 2020-10-10 21:17:40 · 4174 阅读 · 1 评论 -
算法:动态规划第三讲
第10题 回文串分割(Palindrome Partitioning)题目链接题目描述给出一个字符串s,分割s使得分割出的每一个子串都是回文串计算将字符串s分割成回文分割结果的最小切割数例如:给定字符串s=“aab”,返回1,因为回文分割结果[“aa”,“b”]是切割一次生成的。解题思路状态:子状态:到第1,2,3,…,n个字符需要的最小分割数F(i): 到第i个字符需要的最小分割数状态递推:F(i) = min{F(i), 1 + F(j)}, where j<i &原创 2020-10-10 17:06:17 · 119 阅读 · 0 评论 -
算法:背包问题
背包问题题目链接题目描述有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小和数组 V 表示每个物品的价值.问最多能装入背包的总价值是多大?解题思路代码实现public class Solution { /** * @param m: An integer m denotes the size of a backpack * @param A: Given n items with size A[i] * @param V: Given n it原创 2020-10-07 11:29:28 · 235 阅读 · 0 评论 -
算法:动态规划第二讲
第五题 三角矩阵题目链接题目描述给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字,例如,给出的三角形如下:[[20],[30,40],[60,50,70],[40,10,80,30]]最小的从顶部到底部的路径和是20 + 30 + 50 + 10 = 110。注意:如果你能只用O(N)的额外的空间来完成这项工作的话,就可以得到附加分,其中N是三角形中的行总数。解题思路一方法:动态规划问题:从(0,0)到达最后一行的最小路径和子状态:从(0,0原创 2020-10-07 00:25:19 · 128 阅读 · 0 评论 -
字符串分割动态规划(DP问题)详解
题目链接字符串分割题目描述给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。例如:给定s=“nowcode”;dict=[“now”, “code”].返回true,因为"nowcode"可以被分割成"now code".代码public class Solution { public boolean wordBreak(String s, Set<String>原创 2020-09-30 00:41:23 · 457 阅读 · 0 评论 -
算法:动态规划第一讲(Dynamic Programming)
DP定义:动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。在将大问题化解为小问题的分治过程中,保存对这些小问题已经处理好的结果,并供后面处理更大规模的问题时直接使用这些结果。动态规划的三个特点把原来的问题分解成了几个相似的子问题。所有的子问题都只需要解决一次。储存子问题的解。动态规划的本质,是对问题状态的定义和状态转移方程的定义(状态以及状态之间的递推关系)动态规划问题一般从以下四个角度考虑状态定义状态间的转移方程定义状态的初始化返回结果状态定义的要求:原创 2020-09-28 17:20:24 · 176 阅读 · 0 评论 -
递归算法:从尾到头打印链表
题目链接https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。原创 2020-07-30 10:54:42 · 245 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
核心考点:数组操作,排序思想的扩展使用题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。链接https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=13&tqId=11166&rp=1&ru=/ta/coding-interviews&qru=/ta/cod原创 2020-07-29 00:24:12 · 164 阅读 · 0 评论