随笔分类 -  数据结构与算法分析

摘要:题目:有n种硬币,面值分别为V1,V2,...Vn,每种都有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值! 如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? (表面上这道题可以用贪心算法,但贪心算法无法保证可以求出 解,比如 阅读全文
posted @ 2017-07-18 22:05 李白说故事 阅读(2934) 评论(0) 推荐(3)
摘要:最长公共子序列(LCS)问题 下面通过一个具体的例子来学习动态规划方法 —— 最长公共子序列问题。 最长公共子串(Longest Common Substring)与最长公共子序列(Longest Common Subsequence)的区别: 子串要求在原字符串中是连续的,而子序列则只需保持相对顺 阅读全文
posted @ 2017-05-30 10:20 李白说故事 阅读(446) 评论(0) 推荐(0)
摘要:在Java,尽管有类库Arrays.sort(arr)可以让我们对数组进行排序,当我们参加笔试时,要对一些经典排序算法进行书写,这就要求我们能够写出一些基本的排序算法;本文想讲下希尔排序,但在希尔排序前,我们先谈谈插入排序。 插入排序 上图勾勒出了直接插入排序的步骤,以下我们直接出代码。 从该代码, 阅读全文
posted @ 2017-04-23 20:07 李白说故事 阅读(467) 评论(0) 推荐(0)
摘要:class Node { private int data; // 其他数据 private int otherData; private Node left; private Node right; public Node(int data, int otherData) { this.data = data; this.otherData = otherData; }... 阅读全文
posted @ 2017-04-17 21:50 李白说故事 阅读(220) 评论(0) 推荐(0)
摘要:栈:先进后出 队列:先进先出 循环队列:当我们一直使用对头front,对尾end进行添加,删除元素时,会发现数组很容易满,这时,我们将对头front,对尾end再指向初始化位置。 优先级队列 链表 阅读全文
posted @ 2017-04-17 16:14 李白说故事 阅读(464) 评论(0) 推荐(0)
摘要:/** * 表达式求值 * * @author sun * */ public class Expression { public static void main(String[] args) { // 定义优先级 Map map = new HashMap(); map.put('(', 0); map.pu... 阅读全文
posted @ 2017-04-16 18:51 李白说故事 阅读(164) 评论(0) 推荐(0)
摘要:有关概念: 最长上升子序列(LIS,Longest Increasing Subsequence),在一个序列中最长的单调递增的子序列 例子: 输入: 2 1 5 3 6 4 8 9 7 输出: 5 (1)第一种解法: fi表示以第i个数结尾的LIS长度 对于序列中的一个数i,在i前面枚举数j,j满 阅读全文
posted @ 2017-04-05 22:22 李白说故事 阅读(652) 评论(0) 推荐(0)
摘要:一、递归是指直接或间接地调用自身。 二、递归的注意事项; A:要有出口,否则就是死递归 B:次数不能过多,否则内存溢出 C:构造方法不能递归使用 三、举例子 递归求阶乘 在jvm篇中,我们已经知道jvm有五大区域,其中栈、堆、方法区是我们必须知道干嘛的,因为程序的运行跟着息息相关。 方法区:保存JV 阅读全文
posted @ 2017-03-29 15:55 李白说故事 阅读(295) 评论(0) 推荐(0)
摘要:转载来自:http://www.cnblogs.com/kubixuesheng/p/4378266.html 博主写的很不错,很详细~ 树的定义和基本术语 树(Tree)是n(n>=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件: (1)有且仅有一个特定的称为根(Root)的结点; 阅读全文
posted @ 2017-03-27 16:44 李白说故事 阅读(766) 评论(0) 推荐(0)