剑指offer
文章平均质量分 68
chenx_IU
如果没有努力到无能为力,那就不算真的努力
展开
-
面试题----重建二叉树
一、题目:输入某二叉树的前序遍历和中序遍历的结果,重建出该二叉树,假设无重复数字。例如前序遍历结果为{1,2,4,7,3,5,6,8},中序遍历结果为{4,7,2,1,5,3,8,6},重建出该二叉树并输出其头节点。 首先看到该题目,我们心里应该清楚二叉树的前序遍历和中序遍历各自有什么特点,想不通的话可以在纸上画一画。前序遍历序列中第一个数字总是该二叉树的根节点,但是在中序遍历序列中根节点在中间原创 2017-03-10 10:56:10 · 350 阅读 · 0 评论 -
面试题-----两个栈实现一个队列
一、用两个栈模拟一个队列 思路:看到这个问题,首先我们应该想到的是:栈和队列各自都有什么特性。那让我们回忆一下:栈先进后出,即先入栈的后出栈,而队列是先进先出,即先入队列的先出队列。那么现在我们的目标就很明确了,用栈实现队列,即就是要用先进后出模拟出先进先出。 那么如何用栈来实现队列呐? 假设1,2,3,4,5按照顺序入栈,那么出栈的序列理应为5,4,3,2,1,出队的序列则应该为1,2,3原创 2017-03-17 10:00:01 · 536 阅读 · 0 评论 -
青蛙跳台阶----斐波那契数列
题目要求 一只青蛙一次可以跳上一节台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶共有多少种跳法? 题目分析 看到该题目,首先你可以在纸上画一画,想一想,从一级台阶往后推导,反正我是这么做的,当推导上三四级以后,你就会发现一个规律。按照这种方法推导出来的台阶数与可以选择的方法数之间的关系恰好就是斐波那契数列。那么就不难写出代码了,关键就是我们常常用递归的方式来实现一个斐波那契数列,递归的时间原创 2017-03-18 20:03:55 · 709 阅读 · 0 评论 -
面试题------数值整数次方
问题要求 实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要靠考虑大数问题。 问题分析 看到这个问题,我觉得我跟大多数人想的是一样,直接循环作乘法。但是仔细一想,考虑的还是太少了。从底数和指数两方面分别考虑: 有这么几种情况我们不容忽视,1)对0求倒数出现异常,要做特殊处理;2)0的0次原创 2017-03-19 11:44:51 · 467 阅读 · 0 评论 -
面试题-----在O(1)时间删除链表结点
题目要求 给定单链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 题目分析 首先我看到这个题目,还是会惯性思维,认为删除指定结点,不就是要遍历该链表找到该结点,那就是O(n)呀。。。(无力吐槽我的智商)仔细思考一下,该函数已经给了两个已知的参数了,头节点以及待删除结点。知道待删除结点,也就等于知道了该结点的下一个结点。分析到这里,问题似乎可以解决了,删除该结点,即就是释放该原创 2017-03-23 18:19:19 · 377 阅读 · 0 评论 -
剑指offer(26)——复杂链表的复制
题目 分析原创 2017-08-07 19:24:03 · 326 阅读 · 0 评论 -
剑指offer(27)——二叉搜索树与双向链表
题目 分析 可以在纸上画出一个二叉搜索树,把它转化为一个双向链表,我们不难发现:在二叉搜索树中,每个节点的指向左孩子的指针让它指向它的前一个节点,指向右孩子的指针让它指向它的后一个节点,经过这样的转换,二叉搜索树就转化成为一个双向链表。思想就是这样,理解思想代码实现也就不难了。还有一点就是,这棵树的根节点总比左孩子大比右孩子小,再转化为为双向链表时对应该节点的前驱总比该节点小,后继总比原创 2017-08-10 16:44:04 · 527 阅读 · 0 评论 -
剑指offer(23)——从上往下打印二叉树
题目 从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印 分析 从上到下打印,即就是按层遍历这棵二叉树,然后将其节点上的值打印出来。如果该树只有一个根结点,那么就直接打印该节点就好,这是一种最极端的情况,可是我们常常遇到的并不是这样的情况,即就是打印完一个结点后,该结点会有字节点,所以我们应该考虑如何在打印完一个结点后将其子结点打印出来,在打印完其子结点后如何将其子子结点打印原创 2017-08-06 14:43:44 · 286 阅读 · 0 评论