剑指offer
dxx707099957
这个作者很懒,什么都没留下…
展开
-
剑指27:二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:1、用递归,节点的左链表相邻节点为该节点的左子树最右节点,节点的右链表的相邻节点为该节点的右子树的最左节点2、用非递归,中序遍历、记录节点的前一个节点方法一://递归,先判断左子树,再判断右子树。左指针指向左子树最右节点,右指针指向右子...原创 2019-03-30 17:26:23 · 96 阅读 · 0 评论 -
数据流中中位数
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路:用优先队列建立两个堆,大根堆、小根堆,建堆的时间O(logN)、得到中位数的O(1...原创 2019-04-30 20:51:04 · 76 阅读 · 0 评论 -
正则表达式匹配
题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配解题思路:当模式中的第二个字符不是“*”时:1、如果字符串第一个字符和模式中的第...原创 2019-04-28 11:26:12 · 140 阅读 · 0 评论 -
【约瑟夫环】圆圈中最后剩下的数字
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.....原创 2019-04-23 16:32:07 · 384 阅读 · 0 评论 -
构建乘机数组
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。解题思路:用两个数组分别存左边的累积和右边的累积,left[i]=left[i-1]*arr[i-1],right[i]=right[i+1]*arr[i+1],arr[i...原创 2019-04-27 19:53:21 · 223 阅读 · 0 评论 -
数组中的重复数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。方法一、用HashMap记录数字出现的次数,HashMap已经出现说明重复,时间复杂度O(n),空间复杂度O(n...原创 2019-04-27 18:58:18 · 112 阅读 · 0 评论 -
把字符串转为整数
题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入复制+21474836...原创 2019-04-27 16:28:38 · 79 阅读 · 0 评论 -
丑数
题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。public class Solution { public int GetUglyNumber_Solution(int index) { int[] ans=new ...原创 2019-04-06 21:04:16 · 102 阅读 · 0 评论 -
连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2019-04-05 21:35:46 · 144 阅读 · 0 评论 -
最小k个树
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解法一:使用Parttition函数解法二:使用最大堆,一、在k个整数中找到最大数,二、有可能在这个容器中删除最大数,三、有可能插入一个新数Java使用PriorityQueue优先队列来建堆解法一private int Partitio...原创 2019-04-05 16:02:08 · 176 阅读 · 0 评论 -
翻转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。解题思路:递归和非递归//第一种方法是:非递归方法/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }*/class Solutio...原创 2019-05-08 21:36:24 · 69 阅读 · 0 评论