随笔分类 -  剑指offer

上一页 1 2 3 4 下一页
剑指offer-面试题36-二叉搜索树与双向链表-中序遍历
摘要:/* 题目: 将二叉搜索树转化为排序的双向链表,不能创建新的节点, 只能调整节点的指向,返回双向链表的头节点。 */ /* 思路: 递归。 二叉搜索树的中序遍历得到的序列是递增序列。 左子树left<=>root<=>右子树right。 左链表left<=>root<=>右链表right。 对于左链 阅读全文
posted @ 2019-11-29 20:46 笨宝宝 阅读(124) 评论(0) 推荐(0)
剑指offer-面试题35-复杂链表的复制-链表
摘要:/* 题目: 实现一个函数,复制复杂链表,返回复制链表的头节点。 */ /* 思路: 第一步,复制一个链表S‘,插在原链表S中。 第二步,链表S’复制链表S的random指针。 第三步:拆分链表S和S‘。 */ #include<iostream> #include<string.h> #inclu 阅读全文
posted @ 2019-11-28 21:41 笨宝宝 阅读(86) 评论(0) 推荐(0)
剑指offer-面试题34-二叉树中和为某一值的路径-二叉树遍历
摘要:/* 题目: 输入一颗二叉树和一个整数,打印从根节点到叶子节点中所有和为该整数的路径。 */ /* 思路: 先序遍历,深度遍历。 从树根开始,记录路径之和,遍历到叶子节点,如果和为期望值,则输出。 回退节点,寻找下一个叶子节点,直到遍历完所有到达叶子节点的路径。 */ #include<iostre 阅读全文
posted @ 2019-11-28 20:57 笨宝宝 阅读(114) 评论(0) 推荐(0)
剑指offer-面试题33-二叉搜索树的后序遍历序列-二叉树遍历
摘要:/* 题目: 给定一个序列,判断它是否为某个二叉搜索树的后序遍历。 */ /* 思路: 二叉搜索树:左子树<根节点<右子树。 序列的最右端为根节点,小于根节点的左半部分为左子树,大于根节点的右半部分为右子树。 递归法,判断是否为合法的二叉搜索树。 */ #include<iostream> #inc 阅读全文
posted @ 2019-11-27 20:33 笨宝宝 阅读(97) 评论(0) 推荐(0)
剑指offer-面试题32-之字形打印二叉树-二叉树栈
摘要:/* 题目: 分行按层自上向下呈之字形打印二叉树。第一行从左到右,第二行从右到左,第三行从左到右... */ /* 思路: 使用两个栈stack1和stack2。 stack1存储从左向右打印的节点,stack2存储从右向左打印的节点。 stack1中pop的节点,按照先插入左节点再插入右节点的顺序 阅读全文
posted @ 2019-11-27 19:43 笨宝宝 阅读(102) 评论(0) 推荐(0)
剑指offer-面试题32-分行从上到下打印二叉树-二叉树遍历
摘要:/* 题目: 分行按层自上向下打印二叉树。 */ /* 思路: 使用队列,将节点压入队列中,再弹出来,压入其左右子节点,循环,直到栈为空。 添加两个计数器,current记录当前行的节点数,next记录下一行的节点数。 */ #include<iostream> #include<string.h> 阅读全文
posted @ 2019-11-26 21:51 笨宝宝 阅读(124) 评论(0) 推荐(0)
剑指offer-面试题32-从上到下打印二叉树-二叉树遍历
摘要:/* 题目: 按层自上向下打印二叉树。 */ /* 思路: 使用队列,将节点压入队列中,再弹出来,压入其左右子节点,循环,直到栈为空。 */ #include<iostream> #include<string.h> #include<algorithm> #include<cmath> #incl 阅读全文
posted @ 2019-11-26 21:30 笨宝宝 阅读(99) 评论(0) 推荐(0)
剑指offer-面试题31-栈的压入弹出序列-栈
摘要:#include<iostream> #include<string.h> #include<algorithm> #include<cmath> #include<stdio.h> /* 题目: 输入两个整数序列,第一个序列1表示栈的压入顺序,第二个序列2表示栈的弹出顺序。 判断第一个栈是否可以以 阅读全文
posted @ 2019-11-26 21:05 笨宝宝 阅读(127) 评论(0) 推荐(0)
剑指offer-面试题30-包含min函数的栈-栈
摘要:/* 题目: 定义栈的数据结构,实现一个能够得到栈的最小元素的min函数。 */ /* 思路: 错误思路:每次保存当前最小的元素,如果当前最小元素弹出,最小元素是谁? 正确思路:两个栈,一个栈保存数据,另一个栈用于存储当前最小元素。 */ #include <iostream> #include<c 阅读全文
posted @ 2019-11-25 23:04 笨宝宝 阅读(118) 评论(0) 推荐(0)
剑指offer-面试题29-顺时针打印矩阵-矩阵
摘要:/* 题目: 输入一个矩阵,按照从外到内顺时针的顺序依次打印每一个数字。 */ /* 思路: 1、将打印矩阵看作是打印一个个从外向内的环。 2、每一个环都有一个起始节点,起始节点的坐标*2小于行数和列数。 3、对于每一个环,分别打印从左到右,从上到下,从右到左,从下到上的数字。 */ #includ 阅读全文
posted @ 2019-11-25 21:06 笨宝宝 阅读(85) 评论(0) 推荐(0)
剑指offer-面试题28-对称的二叉树-二叉树递归
摘要:/* 题目: 判断给定的二叉树是否对称。 */ /* 思路: 1、递归法。 2、基础条件:两棵树均为空为true;一棵树为空,一棵树不为空,为false;两棵树的根节点值不同,为false。 3、其它:判断树1的左子树和树2的右子树是否对称,判断树1的右子树和树2的左子树是否对称。 */ #incl 阅读全文
posted @ 2019-11-25 20:04 笨宝宝 阅读(119) 评论(0) 推荐(0)
剑指offer-面试题27-二叉树的镜像-二叉树
摘要:/* 题目:输入一个二叉树,输出该函数的镜像。 */ /* 思路: 基础条件:树为空,或只有一个节点。 其它:递归交换二叉树的左右子树。 */ void Mirror(TreeNode *pRoot) { if(pRoot == nullptr || (pRoot->left == nullptr 阅读全文
posted @ 2019-11-23 19:03 笨宝宝 阅读(117) 评论(0) 推荐(0)
剑指offer-面试题26-树的子结构-二叉树
摘要:/* 题目: 输入两棵二叉树A和B,判断B是不是A的子树。 */ /* 思路: 1、注意浮点数大小的判断。 2、判断树A的某个节点是否和树B的根节点是否相同, 若相同,则判断以A该节点为根节点是否包含树B; 若不包含,判断A的左子树是否包含树B; 若不包含,判断A的右子树是否包含树B。 3、以A的某 阅读全文
posted @ 2019-11-23 17:45 笨宝宝 阅读(108) 评论(0) 推荐(0)
剑指offer-面试题25-合并两个排序的链表-链表
摘要:/* 题目: 输入两个递增排序的链表,合并这两个链表并使新的链表中的节点依然是递增排序。 返回新链表的头节点。 */ /* 思路: 1、返回的链表的头节点为两个链表中头节点数值更小的为链表1。 2、进行比较 3、判断链表2的节点是否为空,若不为空则全部加到链表1的尾部。 */ #include <i 阅读全文
posted @ 2019-11-21 12:52 笨宝宝 阅读(99) 评论(0) 推荐(0)
剑指offer-面试题24-反转链表-链表
摘要:/* 题目: 定义一个函数,输入链表的头结点,反转链表输出反转后链表的头节点。 */ /* 思路: 记录当前节点的next和pre。 断开当前节点指向next的指针,指向pre。 */ #include <iostream> #include<cstdlib> using namespace std 阅读全文
posted @ 2019-11-21 12:02 笨宝宝 阅读(99) 评论(0) 推荐(0)
剑指offer-面试题23-链表中环的入口节点-双指针
摘要:/* 题目: 如果链表中包含环,如何找出环的入口? */ /* 思路: 双指针: 1、判断是否有环。 fast指针一次2步,slow指针一次1步,当fast与slow相遇时,说明有环。 2、判断环路中节点的个数。 当fast和slow相遇的节点在环上,一个指针固定, 另一个指针循环一周再次遇到该固定 阅读全文
posted @ 2019-11-20 22:26 笨宝宝 阅读(136) 评论(0) 推荐(0)
剑指offer-面试题22-链表中倒数第k个节点-双指针
摘要:/* 题目: 链表中倒数第k个节点 */ /* 思路: 考虑边界条件:链表为空,k值超过链表长度。 双指针: q指针指向第k个节点,p指针指向第1个节点。 q指针指向最后一个节点,p指针指向倒数第k个节点。 */ #include<iostream> #include<string.h> #incl 阅读全文
posted @ 2019-11-20 21:22 笨宝宝 阅读(140) 评论(0) 推荐(0)
剑指offer-面试题21-调整数组顺序使奇数位于偶数前面-双指针
摘要:/* 题目: 调整数组顺序使奇数位于偶数前面。 */ /* 思路: 双指针: 一个指针last用于遍历,当为奇数时+1, 当为偶数时,交换last和pre指向的值,向前移动pre指针。 */ #include<iostream> #include<string.h> #include<algorit 阅读全文
posted @ 2019-11-20 21:17 笨宝宝 阅读(135) 评论(0) 推荐(0)
剑指offer-面试题20-表示数值的字符串-字符串
摘要:/* 题目: 判断字符串是否表示数值。 */ /* 思路: 字符串遵循模式A[.[B]][e|EC] ,[+|-].B[e|EC] A、C为可能带正负号的数字串 B为数字串 */ #include<iostream> #include<string.h> #include<algorithm> #i 阅读全文
posted @ 2019-11-19 22:15 笨宝宝 阅读(135) 评论(0) 推荐(0)
剑指offer-面试题19-正则表达式匹配-字符串
摘要:/* 题目: 实现一个函数用来匹配包含'.'和'*'的正则表达式。 '.'表示比配任意字符,‘*’表示匹配0个或多个字符串。 */ /* 思路: 采用递归的方法。 基础条件:当字符串和模式串存在空的情况。 其它情况:考虑模式为'×*’的情况和不为‘×*'的情况。 */ #include<iostre 阅读全文
posted @ 2019-11-19 21:00 笨宝宝 阅读(138) 评论(0) 推荐(0)

上一页 1 2 3 4 下一页