剑指offer
pandeast
这个作者很懒,什么都没留下…
展开
-
合并两个排序的链表(面试题17)
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:拿到这个题之后我们可以想到两种方法去解决:递归和不用递归。不用递归的相对比较好想,就是逐个比较直到其中一个链表的节点为空,然后把剩下来的那个链表的后半部分接到目标链表最后面就可以了。public class Solution { public ListNode Merge(ListNode list...原创 2018-02-27 03:52:48 · 137 阅读 · 0 评论 -
字符串的排列(面试题28)
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路:很显然这道题应该用dfs的思路来做,我们可以考虑用交换的方式因为Java没有交换的函数,所以我们必须自己写一个swap的函数确保程序能正常...原创 2018-03-09 20:45:04 · 155 阅读 · 0 评论 -
搜索二维数组(面试题3)
写出一个高效的算法来搜索 m × n矩阵中的值。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每行的第一个数大于上一行的最后一个整数。[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ]查找17,ret...原创 2018-02-24 04:22:37 · 225 阅读 · 0 评论 -
重建二叉树(面试题6)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。(假设输入的前序遍历和中序遍历的结果中都不含重复的数字。)例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:根据例子还原二叉树-->找到规律-->利用递归解决问题还原二叉树:规律:在前序遍历中,第一个数肯定是根节点,而在中序遍历中,根节点的左边所有数...原创 2018-02-24 07:32:14 · 178 阅读 · 0 评论 -
丑数
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。这道题的思路是要建立一个数组,把比index小的丑数放进这个数组,时间复杂度是n!。所以我们只需要比较三个数的大小,把最小的数放入数组之中。值得注意的是,如果一个数已经与2或3或5相乘过了,则这个数不能在与他们在相乘,这是...原创 2018-03-29 16:26:56 · 129 阅读 · 0 评论