摘要: 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 解题思路: 1、暴力解法,从头到尾遍历一次,我们就能找出最小的元素,复杂度为O(n 阅读全文
posted @ 2019-07-28 16:48 沦为旧友 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题目:写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下: 1、效率很低效的解法,挑剔的面试官不会喜欢 使用递归实现: 我们不难发现在这颗树中有很多的节点是重复的,而且重复的节点数会随着n的增大而急剧增加,这意味着计算量会随着n的增大而急剧增大。事实上,用递归的方法计算的时间复杂度是 阅读全文
posted @ 2019-07-28 16:13 沦为旧友 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 题目:用两个队列实现栈。 分析:通过一系列的栈的压入和弹出操作来分析用队列模拟一个栈的过程,如图所示,我们先往栈内压入一个元素a。由于两个队列现在都是空,我们可以选择把a插入两个队列中的任一个。我们不妨把a插入queue1。接下来继续往栈内压入b,c两个元素。我们把它们都插入queue1。这个时候 阅读全文
posted @ 2019-07-28 15:58 沦为旧友 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 分析: 我们通过一个具体的例子来分析该队列插入和删除元素的过程。首先插入一个元素a,不妨先把它插入到stack1,此时stack1 中的 阅读全文
posted @ 2019-07-28 15:39 沦为旧友 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 分析: 根据中序遍历的特点,要找到一个节点的下一个节点无非就是三种情况: 1、有右子树,这时只需要把其右孩子作为下一个遍历的(并不是要找的)节点,然后沿着该节 阅读全文
posted @ 2019-07-28 14:50 沦为旧友 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重新构造出该二叉树。假设输入的前序遍历和中序遍历的结果中不包含重复的数字。例如输入的前序遍历序列为{1,2,4,7,3,5,6,8}和中序遍历为{4,7,2,1,5,3,6,8},则重建出二叉树并输出它的头结点。 前序遍历:根节点--》左节点--》右节 阅读全文
posted @ 2019-07-28 09:53 沦为旧友 阅读(207) 评论(0) 推荐(0) 编辑