随笔分类 - 算法
工作面试所刷的部分题目记录
摘要:题目 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 剑指offer思路 通过对比前序遍历和对称前序遍历的序列是否相同来判定,这里所谓的对称前序遍历算法是指,遍历的的时候采用根节点、右节点和左节点的次序; 自己写的Low代码
阅读全文
摘要:题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路 刚开始没有什么思路,但是通过画图分析就知道数组的最后一个是二叉树的根节点,它将数组的剩余部分分成了两部分,前一部分小于根节点的值,有一部分大于根界定
阅读全文
摘要:题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 思路 根据二叉搜索树的特点,通过中序遍历得到的是有序的。 自己写的low代码
阅读全文
摘要:题目 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 思路 先排
阅读全文
摘要:题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路 我的思路是,分析
阅读全文
摘要:题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路 二叉树的一种中序遍历 我的Low代码
阅读全文
摘要:题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路 先画图 分析在二叉树的前序遍历序列中,第一个数字总
阅读全文
摘要:题目 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 分有右子树和没有右子树的情况 参考
阅读全文
摘要:题目 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行; 思路 运用两个辅助链表分别记录当前行,以及下一行的节点。 自己写的low代码 import java.util.ArrayList; / public class TreeNode { int val = 0; TreeNode
阅读全文
摘要:题目 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路 递归判断,先判断自身左右子树高度差,再递归判断左右子树是否为平衡二叉树;
阅读全文
摘要:题目 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空); 我的思路 先不管特殊指针,先完成链表的复制,然后在循环给特殊指针赋值; 自己
阅读全文
摘要:题目 输入一个整数n,求1 n这n个整数的十进制表示中1出现的次数。例如,输入12,1 12这些整数中包含1的数字有1、10、11和12,1共出现了5次。 剑指offer思路 循环取余,其实也有另外一种找规律的思路,可是一般情况我可能想不到。 注意这里是说1出现的次数,不是 1出现的整数的个数。 p
阅读全文
摘要:题目一 : 字符串中第一个只出现一次的字符。在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出‘b’。 思路 利用数组第一次遍历字符串记录所有字符出现的次数,第二次查找value值为1的为所需要的,这里用数组比较合适,用HashMap会有问题,比如“google”,得出的结果
阅读全文
摘要:题目 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子....
阅读全文
摘要:第58题 翻转字符串 题目 输入一个英文句子,翻转句子中单词的顺序,单单词内字符的顺序不变。为简单起见,变电符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出“student. a am I”. 我的思路 想将其转为char数组,然后通过从后往前依次进行判断,同时使用到
阅读全文
摘要:第45亿 把数组排成最小数 题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 剑指Offer思路 1. 最直接的解法应该是求出所有数字的全排列,然后把每个排列拼接起来
阅读全文
摘要:第49题 丑数 题目 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数(剑指offer上明确规定是第1500个丑数,这里没有限制丑数范围)。 剑指offer的思路 1.
阅读全文
摘要:第21题 调整数组顺序使奇数位于偶数前面; 题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路 想到借助两个辅助栈,分别用来存放数组中的奇数和偶数,同时从数组的后端开
阅读全文
摘要:和为s的连续正数序列 题目 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给
阅读全文

浙公网安备 33010602011771号