摘要: 题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4 A1:先把数组排序,然后输出前面的K个数 > O(nlogn) A2:当可以修改数组时可以,把第k个数为基准,把所有比第k个数字小的所有数字位于数组的作变,比第k个数字大的所 阅读全文
posted @ 2019-08-30 20:32 XieXinBei0318 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 A1:用算法类中的sort函数排序,中间的数有可能是出现次数超过数组长度一半的数, 阅读全文
posted @ 2019-08-30 16:53 XieXinBei0318 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 【字典序:基于字母顺序排列的单词按字母顺序排列的方法。】 A:递归的思路,先固定第一个字符,求剩余字符的排列 遍历出所 阅读全文
posted @ 2019-08-30 16:09 XieXinBei0318 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 题目:请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点( 阅读全文
posted @ 2019-08-30 13:52 XieXinBei0318 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 A:二叉树中每个节点都有一个left指针指向左节点,一个right指针指向右节点 双向链表中每个节点都有一个prev指针指向前驱节点,一个next指针指向后继节点 在二叉搜索树中 阅读全文
posted @ 2019-08-30 13:28 XieXinBei0318 阅读(698) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空 阅读全文
posted @ 2019-08-30 12:56 XieXinBei0318 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) A:选择前序遍历,因为前序遍历先访问根节点 选择从后向前递归,每次减去当前节点的值,直到遍 阅读全文
posted @ 2019-08-30 01:45 XieXinBei0318 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 A:在二叉树的后序遍历中,数组最后一个元素为根节点,左子树序列始终小于根节点,右子树序列始终大于根节点 找左子树序列和右子树序列 递归调用查找即可,若不满 阅读全文
posted @ 2019-08-30 01:16 XieXinBei0318 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 A:创建一个辅助队列,将根节点入队,添加到输出的vector中 循环:到队为空为止 若二叉树有左结点则将左节点入队 若二叉树有右节点则将右节点入队 队头元素出队 相关题目: 加减二叉树: 现在有一棵无限大的满二叉树,根节点编号为1。编号为 阅读全文
posted @ 2019-08-30 00:09 XieXinBei0318 阅读(365) 评论(0) 推荐(0) 编辑