随笔分类 -  剑指offer

摘要:数值的整数次方 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方 注意exponent的正负 使用位运算 class Solution { public: double Power(double base, int exponent) { 阅读全文
posted @ 2018-07-30 09:05 SkyeAngel 阅读(164) 评论(0) 推荐(0)
摘要:数据流中的中位数 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 自己的想法是利用二叉搜索树,将插入进来的数据流放入一个TreeSet中,这样就是一个有顺序的树 阅读全文
posted @ 2018-05-18 15:23 SkyeAngel 阅读(153) 评论(0) 推荐(0)
摘要:序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树 在序列化二叉树时,可以使用二叉树遍历的递归版本,也可以使用迭代版本,而且先序遍历,中序遍历,后序遍历和层序遍历都可以实现,但是在进行反序列化时,本来用二叉树中序遍历实现的序列化,不会反序列化回来,可能是我功力不够吧,现在只会先序遍历的反序 阅读全文
posted @ 2018-05-10 14:55 SkyeAngel 阅读(144) 评论(0) 推荐(0)
摘要:不用加减乘除做加法 不会 阅读全文
posted @ 2018-05-08 22:52 SkyeAngel 阅读(168) 评论(0) 推荐(0)
摘要:和为S的连续正数序列 笨方法:从1开始向后遍历,同时记下当前数组中的和,若和为sum,则将当前数组的值存入结果集中res.add(s),此时要重新 s = new ArrayList<>(), 不然后面改变 s 之后,res中的结果也会发生变化。 同时用一个下标记录下当前遍历的数组中的最小值,在 s 阅读全文
posted @ 2018-05-02 17:09 SkyeAngel 阅读(147) 评论(0) 推荐(0)
摘要:删除链表中重复的结点 两种方法: 法一:不太好 借助于HashMap,将每个结点均加入map中,key为结点值,value为boolean类型,为true表示加入了一次,false表示加入了两次及以上, 在加入前判断map中是否已存在结点的值, 若不存在,则加入(node.val, true) 若存 阅读全文
posted @ 2018-05-02 15:14 SkyeAngel 阅读(157) 评论(0) 推荐(0)
摘要:数组中的逆序对 **(不会)数据结构--小和问题 逆序对问题 阅读全文
posted @ 2018-05-02 10:08 SkyeAngel 阅读(120) 评论(0) 推荐(0)
摘要:翻转单词顺序列 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am 阅读全文
posted @ 2018-05-01 23:13 SkyeAngel 阅读(162) 评论(0) 推荐(0)
摘要:二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 利用中序遍历法,记录一个前驱结点,然后将当前结点的左孩子指向前驱节点,这样的话,向左< 表示逆序,然后将前驱结点的右孩子指向当前节点-->,可以形成正序。 在这里 阅读全文
posted @ 2018-03-31 08:40 SkyeAngel 阅读(151) 评论(0) 推荐(0)
摘要:平衡二叉树 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 平衡二叉树的概念:为空树,或者左右两边的高度差不超过1 自己想的笨方法:从根部开始,采用前序遍历法,依次求左右子树的深度,然后求它们的差,遇到不符合要求的结点的返回false,否则递归的进行后续子结点的高度的求解 IsBalanced_So 阅读全文
posted @ 2018-03-31 08:06 SkyeAngel 阅读(186) 评论(0) 推荐(0)
摘要:字符串的排列 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 解:就是将字符串abc当前位置的字符和下一个字符进行交换,递归 阅读全文
posted @ 2018-03-30 10:56 SkyeAngel 阅读(100) 评论(0) 推荐(0)
摘要:两个链表的第一个公共结点 输入两个链表,找出它们的第一个公共结点。 解:刚开始看这道题的时候,想的很简单,就是两个一起遍历,然后找到一样个一样的值就返回就行了,后来一直不通过,就很郁闷。 然后看了解析,说的是第一个公共结点的意思其实是从这一个公共结点之后的结点一直都是一样的。直到链表的末尾。 所以可 阅读全文
posted @ 2018-03-30 09:48 SkyeAngel 阅读(165) 评论(0) 推荐(0)
摘要:数组中只出现一次的数字 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 在位运算中的异或 ^ 可以将两个相等的数组消去,而在这一题目中,有两个不相等的数字,所以他们之间至少有一位不同, 含有1(如5和2 1001 0010)异或之后的结果是1011,在数 阅读全文
posted @ 2018-03-29 11:19 SkyeAngel 阅读(161) 评论(0) 推荐(0)
摘要:最小的K个数 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 排序——堆排序 利用堆排序中的构造小顶堆的方法,依次构造k次,然后就可以求出最小的k个数 阅读全文
posted @ 2018-03-29 10:33 SkyeAngel 阅读(178) 评论(0) 推荐(0)
摘要:二叉树中和为某一值的路径 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 解:在这个题目中,求二叉树指定路径,判断条件就是在叶子结点处,此时target==0 而要想求一棵二叉树一条路径的长度的话,只有前序 阅读全文
posted @ 2018-03-28 16:32 SkyeAngel 阅读(115) 评论(0) 推荐(0)
摘要:二叉树的深度 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 注意:树的深度,是要求最长的树高,即要找到所有的叶子结点 java中的选择两数中的最大值,要用Math.max(a, b) 看了别人的代码后,改进自己的方法 别人的 阅读全文
posted @ 2018-03-23 16:11 SkyeAngel 阅读(187) 评论(0) 推荐(0)
摘要:求1+2+3+...+n 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 自己没有思路 看的别人的思路: 因为不能使用判断,循环等语句,所以只能用别的方法来替代判断条件 短路&&的话有一个判断机制 当前面 阅读全文
posted @ 2018-03-23 10:21 SkyeAngel 阅读(164) 评论(0) 推荐(0)
摘要:平衡二叉树 AVL树 左右子树的高度差不超过1,且左右两棵子树也是平衡二叉树 二叉排序树(BST) 阅读全文
posted @ 2018-03-22 17:13 SkyeAngel 阅读(131) 评论(0) 推荐(0)
摘要:左旋转字符串 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定 阅读全文
posted @ 2018-03-20 23:00 SkyeAngel 阅读(97) 评论(0) 推荐(0)
摘要:和为S的两个数字 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 自己的解法: 非常的麻烦 先把array的数组放入一个Map(Map中的数字范围中要小于sum)中,键即为该数字,然后利用迭代器遍历map,事先准备一个 阅读全文
posted @ 2018-03-20 11:29 SkyeAngel 阅读(240) 评论(0) 推荐(0)