
算法问题
文章平均质量分 57
hellodake
这个作者很懒,什么都没留下…
展开
-
背包问题详解
1.0-1背包问题问题描述:有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是p[i]。求解将哪些物品装入背包可使这些物品的总重量不超过背包容量,且价值总和最大。思路:每种物品仅有一件,可以选择放或不放。F[i,v]表示前i件物品放入一个容量为v的背包可以获得的最大价值。状态转移方程为:F[i,v]=max{F[i-1,v],F[i-1,v-w[i]]+p[i]}...原创 2018-09-04 14:55:39 · 847 阅读 · 0 评论 -
堆排序原理与实现
堆排序实际上是利用堆的性质来进行排序的,我们通常说的堆就是二叉堆,二叉堆又称完全二叉树或者近似完全二叉树。堆排序是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。数组可以根据索引直接获取元素,时间复杂度为O(1)。最大堆的特性如下:父结点的键值总是大于或者等于任何一个子节点的键值 每个结点的左子树和右子树都是一个最大堆最小堆的特性如下:父结点的键值总是小于或者等于...原创 2018-09-04 16:26:00 · 490 阅读 · 0 评论 -
计算二叉树高度的三种方法
递归public class 递归 { class TreeNode{ int val; TreeNode left; TreeNode right; public TreeNode(int value){ this.val=value; } } public int getHeight(TreeNode root){ if(root==null){...原创 2018-09-17 20:23:39 · 57513 阅读 · 11 评论 -
二叉树镜像
求二叉树镜像。public class Solution { public void Mirror(TreeNode root) { if(root==null){ return; } if(root.left==null&&root.right==null){ retur...原创 2018-09-17 16:15:29 · 125 阅读 · 0 评论 -
跳台阶问题
1.输出斐波那契数列的第n项。直接上代码:public class Fibonacci { public static int fibonacci(int n){ if(n==0){ return 0; } if(n==1){ return 1; } if(n==2){ return 1; } return fibonacci(n-1)+f...原创 2018-09-20 19:59:01 · 162 阅读 · 0 评论 -
字符串编辑距离
字符串的编辑距离,又称为Levenshtein距离。是利用字符操作,把字符串A转换成字符串B所需要的最少操作数。其中,字符操作包括:删除一个字符 插入一个字符 修改一个字符 例如对于"hello"和"hell",可以通过插入一个'o'和删除一个'o'来达到目的。 一般来说,两个字符的编辑距离越小,则它们越相似。如果两个字符串相同,则它们的编辑距离为0.可以分析出,...原创 2018-09-22 19:42:51 · 634 阅读 · 0 评论