java反转链表
摘要:/** * 遍历,将当前节点的下一个节点缓存后更改当前节点指针 */ public static Node reverse2(Node head) { if (head == null) return head; Node pre = head;// 上一结点 Node cur = head.get
阅读全文
posted @
2017-10-10 11:07
blythe
阅读(232)
推荐(0)
之字形打印二叉树
摘要:public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> ans = new ArrayList<>(); if (root == null) return ans; // 使用两个栈维护顺序 S
阅读全文
posted @
2017-09-17 16:12
blythe
阅读(151)
推荐(0)
堆排序过程
摘要:原文链接:http://blog.csdn.net/sxhelijian/article/details/50295637 例:对{57, 40, 38, 11, 13, 34, 48, 75, 6, 19, 9, 7}进行堆排序的过程。 算法如下: (1)循环建立初始堆 用给出的序列构造堆的初始状
阅读全文
posted @
2017-09-14 11:44
blythe
阅读(737)
推荐(0)
二叉树的非递归遍历
摘要:// 先序遍历非递归 public static void preOrder2(BinTree t) { Stack s = new Stack(); while (t != null || !s.empty()) { while (t != null) { ...
阅读全文
posted @
2017-09-06 18:25
blythe
阅读(169)
推荐(0)
排序算法的稳定性
摘要:稳定的排序算法:归并,插入排序 不稳定的排序算法:选择排序 (5,7,5,3)3和5交换之后,两个5的相对顺序发 生了变化) shell排序 (1, 5, 5, 2,3, 7) 间隔序列为(3, 1), 3的时候 (1,5,7)(5,2,3)), 在间隔>1的时候会出现不 稳定 快速排序 (3, 5
阅读全文
posted @
2017-08-30 18:50
blythe
阅读(132)
推荐(0)
哈夫曼树
摘要:参考:http://www.cnblogs.com/wuyuankun/p/3982216.html http://www.cnblogs.com/yaowen/p/4268157.html 哈夫曼树又称最优二叉树, 是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点 的权值
阅读全文
posted @
2017-08-30 15:36
blythe
阅读(1577)
推荐(0)
二叉树的计算
摘要:1.先复习一下等差数列和等比数列求和公式 2.满二叉树与完全二叉树 满二叉树(Full Binary Tree): 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点(最后一层上的无子结点的结点为叶子结点)。也可以这样理解,除叶子结点外的所有结点均有两个子结点。节点数达到最大值。所有叶子结点
阅读全文
posted @
2017-08-25 09:26
blythe
阅读(710)
推荐(0)
单调栈与单调队列
摘要:单调栈与单调队列很相似,单调性指的是严格的递增或者递减。 单调栈有以下两个性质: 1、若是单调递增栈,则从栈顶到栈底的元素是严格递增的。若是单调递减栈,则从栈顶到栈底的元素是严格递减的。 2、越靠近栈顶的元素越后进栈。 单调栈与单调队列不同的地方在于栈只能在栈顶操作,因此一般在应用单调栈的地方不限定
阅读全文
posted @
2017-08-24 09:27
blythe
阅读(148)
推荐(0)
随机打乱数组
摘要:主要用到了java.util包下的Collections.shuffle方法
阅读全文
posted @
2017-08-18 08:27
blythe
阅读(100)
推荐(0)
二叉树的构建
摘要:要构建二叉树及对二叉树进行操作首先得构建节点,节点包括节点的值还有它的左右孩子 对二叉树的操作有构建,遍历(递归,非递归,层次遍历)。栈的特点是先进先出,用栈能保留二叉树的访问路径,所以二叉树的非递归遍历应该用栈来操作,队列是先进后出,用来层次打印二叉树。
阅读全文
posted @
2017-08-17 09:26
blythe
阅读(427)
推荐(0)
计算1+11+111+1111+........
摘要:f(n)=f(n-1)+10^n; public static void main(String[] args) { int n=2017; long temp=1; for(int i=1;i<n;i++){ temp+=func(i); } System.out.println(temp); }
阅读全文
posted @
2017-08-16 19:18
blythe
阅读(472)
推荐(0)
Jav实现F(n)=F(n-1)+F(n-2)+.....+F(1)+1
摘要:private static int func(int count) { // TODO Auto-generated method stub int cou = 0; if(count==1){ cou=1; } else if(count==2){ cou=2; } else{ for(int
阅读全文
posted @
2017-08-16 14:09
blythe
阅读(328)
推荐(0)
查找二维数组中是否有符合的目标值
摘要:/** * 在一个二维数组中,每一行都按照从左到右递增的顺序排序, * 每一列都按照从上到下递增的顺序排序。请完成一个函数, * 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 * * 思路 : * 从左下角最后一个元素开始比较,如果target小于这个元素向上遍历否则向右遍历 */
阅读全文
posted @
2017-08-16 11:01
blythe
阅读(249)
推荐(0)
排序算法
摘要:/** * 冒泡排序 */ public static void Bubble(int[] array){ for(int i=0;i<array.length-1;i++){ for(int j=0;j<array.length-1-i;j++){ if(array[j]>array[j+1]){
阅读全文
posted @
2017-08-16 09:36
blythe
阅读(110)
推荐(0)
时间复杂度
摘要:时间复杂度与空间复杂度是衡量算法是否优秀的标准 一般时间复杂度有O(1),O(n),O(n2),O(logN) O(logN)举例: for(int i=1;i<n;i++){ i=i*2; } 在这段程序里,假设要执行x次,则2x 应该小于n,最后小于logN,所以它的时间复杂度为O(logN)
阅读全文
posted @
2017-08-15 21:11
blythe
阅读(111)
推荐(0)
查找一个字符串中重复出现字符的个数
摘要:import java.util.HashMap;import java.util.Map;import java.util.Scanner; /** * 查找一个字符串中重复出现字符的个数 * 首先声明一个map,从第一个字符开始遍历,如果map中已经有了这个字符则把值加1,否则重新 * 创建一个
阅读全文
posted @
2017-08-15 11:37
blythe
阅读(1319)
推荐(0)