剑指offer
开发小牛进阶
Java小白,公众号同名。
展开
-
《剑指offer:Java版》 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字
描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 诀窍: 思路:递归思想 前序序列的第一个元素即为根节点,根据根节点的值在中序序列找到根节点的位置假定为i 则根据二叉树前序和中序的规律: 前序序...原创 2020-03-15 23:14:41 · 1347 阅读 · 1 评论 -
《剑指offer:Java版》 输入一个链表,按链表从尾到头的顺序返回一个ArrayList
描述: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList 实现: package com.ma.offer; import java.util.ArrayList; import java.util.Stack; /** * 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 */ class ListNode { int val; Lis...原创 2020-03-14 16:43:40 · 215 阅读 · 0 评论 -
《剑指offer:Java版》 请实现一个函数,将一个字符串中的每个空格替换
描述: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 实现: package com.ma.offer; public class Demo02 { /** * 请实现一个函数,将一个字符串中的每个空格替换成“%20”。 * 例如,当字符串为We ...原创 2020-03-13 22:15:53 · 382 阅读 · 0 评论 -
《剑指offer:Java版》 用两个栈实现队列
题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 x /* * 用两个栈实现队列 * 入栈给stack1,出栈时,若stack2不为空,则出栈, * 若为空,把stack1的内容全部放入stack2,然后出栈。 */ public class Main { Stack<Integer> stack1 = new Stack&...原创 2018-05-27 00:15:21 · 221 阅读 · 0 评论 -
《剑指offer》 旋转数组的最小元素
题目描述: 把一数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组的大小为0,请返回0. public class Main { /* * 传入旋转...原创 2018-05-28 09:28:03 · 130 阅读 · 0 评论 -
《剑指offer:Java版》 二维数组中的查找
题目描述: 在一个二维数组中,每一个行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 1 2 8 9 2 4 8 12 4 ...原创 2018-05-24 10:23:57 · 155 阅读 · 0 评论 -
《剑指offer:Java版》 斐波那契数列
* 题目: 跳台阶 题目描述: 一只青蛙一次可以跳一级台阶也可以跳上两级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 (斐波那契数列) public class Solution91 { public int finbonacci(int n){ if(n <= 0){ r...原创 2018-06-01 17:09:07 · 138 阅读 · 0 评论 -
《剑指offer:Java版》按之字形顺序打印二叉树
题目描述: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路解析: 需要两个栈来辅助输出之字形的二叉树的结点值。 单数栈是单数行的输出,在出栈的过程中,需要把出栈结点的左右子树放入双数栈中,先左后右,这样输出就是从后向前了 双数栈是双数行的输出,在出栈的过程中,需要把出栈结点的左右...原创 2018-09-29 00:47:09 · 150 阅读 · 0 评论