算法与数据结构
文章平均质量分 60
Crazy丶Mark
这个作者很懒,什么都没留下…
展开
-
JDK1.8 HashMap分析
JDK1.8HashMap分析-HashMap是基于数组+链表+红黑树实现的一种数据结构,如下图所示 最上面的一部分是数组,下面是链表,当节点数>=8的时候,链表会自动转化成红黑树在分析HashMap之前,我们先来看看HashMap中几个关键的常量static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;  ...原创 2018-02-07 00:34:26 · 238 阅读 · 0 评论 -
为什么要学习算法?
在我学习JVM的时候,有一个5~6年开发经验的coder说:学习这个有什么用啊,在工作中又用不到,还这么难。这句话引起了我的思考,这个问题和我今天想说的,为什么要学习算法其实是同一个问题,也是不少IT从业者不解的问题。对于很多程序员来说,可能在工作中不会写出比冒泡排序更复杂的算法了,还有必要去花时间去学习吗?先不急着回答这个问题,我们继续看看那个coder是怎么学习的。他说:他在工作的时候...原创 2018-02-11 09:58:53 · 4139 阅读 · 0 评论 -
二进制中1的个数
题目是这样的:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。可能大部分人看到这个题的第一反应就是把数字的二进制表示换成字符串,然后去找里面1的个数。这种思维是人正常的思维,但不是计算机的思维,这种方式是对计算机不友好的,因为计算机只认识0和1,那有办法通过0和1的计算来得到结果吗?答案是肯定的 public int NumberOf1(int n) { ...原创 2018-02-11 14:32:17 · 198 阅读 · 0 评论 -
跳台阶问题
在看这个问题之前,我们先来看看斐波那契数列斐波那契数列f(0)=0,f(1)=1,f(2)=f(1)+f(0),f(n)=f(n-1)+f(n-2) 求他n项的程序如下public int Fibonacci(int n) { if(n==0){ return 0; } if(n==1){ ...原创 2018-02-11 20:33:39 · 122 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。先序遍历是先遍历父节点,再遍历左子节点,最后是右子节点 中序遍历是先遍历左子节点,再遍历父节点,最后再遍历右子节点首先我们先看先序遍历,知道根节点是...原创 2018-02-11 20:46:10 · 135 阅读 · 0 评论