算法题
文章平均质量分 73
香波特不香
这个作者很懒,什么都没留下…
展开
-
找出数组中只出现一次的数字
来源于《剑指offer》,书上用C/C++写的 一个整数数组中有一个数字只出现1次,而其它所有数字都是出现2次,找出该数? 解答:将该数组的所有数异或得到的即是该数,因为a⊕b⊕a=b 如果数组中出现2个这样的数字,该如何? 解答:依然先将所有数据异或,得到的是这2个只出现一次的数字异或的结果,这2个数不相等,则得到的结果一定不为0,即它的二进制至少有1个1,而这个1一定只来自这2个数其中...原创 2018-11-06 15:53:16 · 180 阅读 · 0 评论 -
求一个数的整数幂
来源于《剑指offer》,但是书上用C写的,这里用Java实现,简单易懂 package algorithm; /* * @author weijie * 实现了求解一个数的整数次方 * 采用二分幂递归的方式实现 * 参考数学模型,指数函数的按奇偶二分幂分段函数(二分之后递归特性就显现出来了) * 注:这里的数未必是整数,也未必是正数,只是幂是整数而已,也就是说幂可能为负数 * @d...原创 2018-11-13 11:07:46 · 393 阅读 · 0 评论 -
求解斐波那契数列
来源于《剑指offer》 package algorithm; /* * @author weijie * 实现了递归求解斐波那契数列 * 实现了树形拆分后的自下往上计算求解斐波那契数列 * 矩阵公式比较生僻,暂未实现(2018-11-07) * @date 2018-11-07 */ public class Fibonacci { public static void ...原创 2018-11-13 11:12:38 · 123 阅读 · 0 评论 -
找出0~100的数组中缺失的数据
来源:https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/82864223 思路:先使用bitmap算法进行标记,再遍历一遍标记即可找出缺失的 扩展:如果用一个较小的内存对大量数据进行排序,如使用10M内存1G数据排序,也可以采用这种思路。bitmap算法使用二进制标识一个数据是否出现,一个long类型64位,可以标记64个不同的数据...原创 2018-11-19 09:30:41 · 689 阅读 · 0 评论 -
检测环形链表
来源:《剑指offer》 思路:使用快慢指针遍历链表,如果是环形链表,则快慢指针一定在环的入口(也是环的结束点)相遇 package test; public class CircleLink { public static void main(String[] args) { CircleLink.MyLink link =createLink(); ...原创 2018-12-26 16:59:49 · 327 阅读 · 0 评论 -
《剑指offer》Java版(一)
3.二维数组中的查找 5.从尾到头打印链表 6.重建二叉树 8.旋转数组的最小数字 9.斐波那契数列 10.二进制数中1的个数 15.链表中倒数第k个节点 16.反转链表 17.合并2个排序的链表 19.二叉树的镜像 23.从上往下打印二叉树 25.二叉树中和为某一值的路径 26.复杂链表的复制 27.二叉搜索树与双向链表 29.数组中出现次数超过一半的数字 31.连...原创 2019-03-18 11:43:28 · 143 阅读 · 0 评论 -
《剑指offer》Java版(二)
26.复杂链表的复制 /* * 复杂链表的复制,每个节点除了next域还有一个sibling域指向任意节点 * 如果按照next顺序复制,那么sibling域可能指向一个目前还未复制的节点,并且需要再从头搜索一遍 * 本思路参考《剑指offer》,分3步 * 第一步,在原链表的每个原节点后复制一个相同节点,此时只指定了next域,即A指向A' *...原创 2019-03-18 11:45:27 · 129 阅读 · 0 评论 -
LeetCode题目解析
20.有效括号对 /* * 有效括号对 * 思路:即将入栈的是前括号则直接入栈,若是后括号则比较栈顶元素,匹配则出栈 */ public boolean isValid(String s) { if(s==null||s.length()%2!=0) return false;//如果允许空,则不能这么判断 else if(s...原创 2019-05-25 15:37:15 · 218 阅读 · 0 评论