剑指offer
梅纸
这个作者很懒,什么都没留下…
展开
-
剑指Offer23——二叉搜索树的后序遍历序列
/** * 二叉搜索树的后序遍历序列 * <p> * 首先要拿到数组末尾即使二叉树根节点,因为是搜索树,所以左子树比根节点小,右子树都比根节点大。 * 若发现异常即不是后序遍历序列。 * <p> * 1. 因为左子树和右子树都符合以上规律,所以用递归方法;为避免创建新的子树序列数组,需要创建一个新函数,传入start,end * 2...原创 2020-03-09 23:35:52 · 182 阅读 · 0 评论 -
剑指22——从上往下打印二叉树
/**从上往下打印二叉树 * 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 * * 思路:这是个层次遍历 * 主要思路是:使用队列来实现,将根节点输入队列,再把它的左节点右节点输入队列 * 队列依次取出来并且再将各自的左右节点输入进去,这样可以实现层次遍历 * * @author 梅纸 * */class TreeNode { int val = ...原创 2020-03-09 23:35:02 · 130 阅读 · 0 评论 -
剑指Offer21——栈的压入,弹出序列
/* 栈的压入,弹出序列 * * 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。 * 假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序, * 序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 * (注意:这两个序列的长度是相等的) * * 主要是观察栈顶元素...原创 2020-03-09 23:34:18 · 127 阅读 · 0 评论 -
剑指Offer20——包含min函数的栈
/*包含min函数的栈 * * 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数 * (时间复杂度应为O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 * * 思路:建立一个辅助栈:mini栈+data栈 * (data栈就正常存放数据即可,mini栈入栈时和他的最上面的数据进行比较,比他...原创 2020-03-09 23:33:34 · 92 阅读 · 0 评论 -
剑指Offer18——二叉树的镜像
/* 二叉树的镜像 * 操作给定的二叉树,将其变换为源二叉树的镜像。 * 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...原创 2020-03-09 23:31:26 · 110 阅读 · 0 评论 -
剑指Offer17——树的子结构
/*树的子结构 * * 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) * * 对于给定的树A和树B,如果B是A的子树,有三种情况:第一种:A和B的根相等,这时候判断A和B的左右子树是否分别相等第二种:B存在于A的左子树中,递归调用本函数第三种:B存在于A的右子树中,递归调用本函数这三种情况中,最终需要判定A和B相等,这时候才...原创 2020-03-09 23:29:47 · 82 阅读 · 0 评论 -
剑指Offer16——合并两个排序的链表
/*合并两个排序的链表 * * 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 * * * 递归 * 如果表1当前值小于表2当前值,表1当前值成为新链表的表头,否则返回表2的当前值作为新链表的表头。 * * */class ListNode { int val; ListNode next = null; ...原创 2020-03-09 23:28:52 · 78 阅读 · 0 评论 -
剑指Offer15——反转链表
/*反转链表 * * 输入一个链表,反转链表后,输出新链表的表头。 * * * * * */class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}class ListNode { int va...原创 2020-03-09 23:27:54 · 103 阅读 · 0 评论 -
剑指Offer13——调整数组顺序使奇数位于偶数前面
/*调整数组顺序使奇数位于偶数前面 * *输入一个整数数组,实现一个函数来调整该数组中数字的顺序, *使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分, *并保证奇数和奇数,偶数和偶数之间的相对位置不变。 * * * * * * */public class Offer13 { public void reOrderArray(int []...原创 2020-03-09 23:25:18 · 59 阅读 · 0 评论 -
剑指Offer12——数值的整数次方
/* * 数值的整数次方 * * 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 * * 需要注意exponent是负数的情况 * Math.abs()是取绝对值的函数 * * */public class Offer12 { public do...原创 2020-03-01 21:56:45 · 99 阅读 · 0 评论 -
剑指Offer11——二进制中1的个数
/* * * 二进制中1的个数 * 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 * * 把一个整数减去1,再和原整数做与运算,会把该整数最右边的一个1变成0. * 那么一个整数的二进制表示中有多少个1,就可以进行多少次运算。 * */public class Offer11 { public int NumberOf1(int n) { in...原创 2020-03-01 21:56:13 · 129 阅读 · 0 评论 -
剑指Offer10——矩形覆盖
/* * 矩形覆盖 * 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。 * 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? * * 设想这么一个矩形,n=3的情况等于:1.n=2加上一列2.n=1加上两行则f(n)=f(n-2)+f(n-1) * */public class Offer10 { public int RectCov...原创 2020-03-01 21:55:37 · 100 阅读 · 0 评论 -
剑指Offer09——变态跳台阶
/* * 题目描述 * 变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。共1级台阶:1种方法 n级台阶共f(n)方法2 :23:f(1)+f(2)=3n:f(n-1)+f(n-2)+……+f(1)n-1:f(n-2)+……+f(1)相减 f(n)-f(n-1)=f(n-1)则f(n...原创 2020-03-01 21:55:07 · 94 阅读 · 0 评论 -
剑指Offer08—— 跳台阶
/* 跳台阶 * 题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 * * * 假设一级台阶有f(1)种方法,2级台阶有f(2)种方法……n级台阶有f(n)种方法 * 可以看出来f(1)=1,f(2)=2 * 那么,假设n级台阶,那么第一步就有两种情况,跳一步,跟跳两步。情况一:跳一步,那么接下去...原创 2020-03-01 21:54:29 · 56 阅读 · 0 评论 -
剑指Offer07—— 斐波那契数列
/* 斐波那契数列 * 题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 * * 斐波那契数列:F(n)=F(n-1)+F(n-2) * * * * * * */public class Offer07 { public int Fibonacci(int n) { if(...原创 2020-03-01 21:53:41 · 71 阅读 · 0 评论 -
剑指Offer06——旋转数组的最小数字
/*旋转数组的最小数字 * 题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 * * 输入的是非递减数组,即递增数组或者只有一个元素 * 那么对于递增...原创 2020-03-01 21:52:45 · 91 阅读 · 0 评论 -
剑指Offer05——用两个栈来实现一个队列
注意出列一个元素之后需要恢复到最初的状态/* * * 题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 * */public class offer05 { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 ...原创 2020-02-26 14:16:24 · 55 阅读 · 0 评论 -
剑指offer4—— 重建二叉树
参考思路:https://blog.csdn.net/qq_23217629/article/details/51718996?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task主要是采用递归的思想,还是需要多理解/* * 题目描述输入某二叉树...原创 2020-02-26 11:12:55 · 174 阅读 · 0 评论 -
剑指offer03——从头到尾打印链表
import java.util.ArrayList;/* * 题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 * * public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this...原创 2020-02-26 10:06:28 · 119 阅读 · 0 评论 -
剑指offer——替换空格
/**题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。* 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。* */public class replacePlace { public static String replaceSpace(StringBuffer str) { //拷贝str1,...原创 2020-02-25 13:08:16 · 70 阅读 · 0 评论