剑指offer
BabysBreath_hl
切骄切燥
展开
-
剑指offer-二叉树的重建
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果都不含重复的数字。假如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。问题分析:递归思想处理前序遍历顺序为:节点->左子树->右子树中序遍历顺序为:左子树->节点->右子树在前序遍历数组中,拿到第一个节点数据,然后原创 2017-06-09 00:59:44 · 688 阅读 · 2 评论 -
剑指offer-- 合并两个排序的链表
题目描述:输入两个递增的链表,输出一个合并之后的链表,合并后的链表需保持递增状态。输入例子:L1: 2->5->8->12->13->15->16->18->20L2:1->3->4->7->9->10输出:L:1->2->3->4->5->7->8->9->10->12->13->15->16->18->20题目分析:我们可以使用递归与非递归求解该问题。递归思原创 2017-07-13 16:35:26 · 549 阅读 · 0 评论 -
剑指offer--反转链表
题目描述:输入一个链表,反转链表后,输出链表的所有元素。思路1:1、用三个链表指针分别指向当前节点、当前节点的前一个节点,当前节点的下一个节点;2、将节点的next指向反转,也就是让当前节点的next指向当前节点的前一个节点,最后将该链表的最后一个节点赋给一个新的节点,同时将该新节点返回;时间复杂度:O(N)代码实现:#include //链表反转#inclu原创 2017-07-14 23:32:56 · 810 阅读 · 0 评论 -
剑指offer--不用加减乘除做加法
题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。题目思路:1、回顾一下5+7=12的过程; 个位得到的是2,十位进位为10,相加得12;如果没有进位的时候直接就是各位相加得数;2、那么利用5->101,7->111;两个按位与之后得到的是需要进位的位然后进位一位,两个数按位异或相当于两个数相加;然后将 按位与进位后的数与按位异或之原创 2017-07-15 00:00:00 · 769 阅读 · 0 评论 -
剑指offer--判断链表是否带环?若带环求环的长度?若带环求环的入口点?
1、判断链表是否带环?链表是否带环,可以采用快慢指针法,用两个指针指向链表的头结点,一个指针一次向后走一个位置,另一个指针向后走两个位置,这样如果两个指针如果相遇,这样就能说该链表带环,如果当快指针或者快指针的next为NULL时,还没有相遇。哪么就说明该链表不带环。我实现时,用一个pair模板去实现,这样为了方便后面两个问题的解决。代码实现:#includestruct Lis原创 2017-07-15 21:18:05 · 888 阅读 · 0 评论 -
腾讯面试题--程序一共输出多少个“-”
题目详情:请判断下列程序一共输出多少个“-”;int main(void) { int i; for(i=0; i<2; i++){ fork(); printf("-"); } return 0; }题目分析:fork()出的子进程会复制父进程的变量值,缓存信息等,1、当i=0时,父进程A创建出一个子进程A1,A进程的输出缓冲区会增加一个“-”,A1原创 2017-07-17 14:59:03 · 1592 阅读 · 2 评论 -
剑指offer--复杂链表的复制
题目详情:复杂链表的复制;链表节点会存在一个随机指针,它会指向任意节点或NULL,请完成它的复制。节点结构体:typedef struct ComplexNode{ int _data; // 数据 struct ComplexNode * _next; // 指向下一个节点的指针 struct ComplexNode * _random; // 指向随机节点(可以是链表中原创 2017-07-18 11:29:17 · 529 阅读 · 0 评论 -
剑指offer-顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.代码实现: vector printMatrix(vector > matrix) { if(matrix.siz原创 2017-09-02 22:59:01 · 467 阅读 · 0 评论