剑指offer-栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等...

2019-05-14 16:05:14

阅读数 2

评论数 0

Java相关

对象流:对象流指的是可以直接把一个对象以流的形式传输给其他的介质,如硬盘。 一个对象以流的形式进行传输,叫做序列化。该对象所对应的类,必须实现Serializable接口。 Collection是Set List Queue和Deque的接口。 Collection和Map之间没有关系,前者是放一...

2019-05-11 17:02:31

阅读数 8

评论数 0

剑指offer-包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 解题思路:把每次的最小元素保存起来放到另外一个辅助栈里。 如果每次都能把最小元素压入辅助栈,那么就能保证辅助栈栈顶一直都是最小元素,当最小元素从数据栈内被弹出之后,同时弹出辅助栈的栈顶元素,此时...

2019-05-10 13:34:11

阅读数 3

评论数 0

剑指offer-顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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. 解题思路:我们可以把矩阵想...

2019-05-10 12:54:09

阅读数 22

评论数 0

剑指offer-二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。 解题思路:先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点,当交换完所有非叶节点的左右子节点之后,就得到了树的镜像。 */ public class Solution { public void Mirror(TreeN...

2019-05-10 10:45:16

阅读数 15

评论数 0

剑指offer-树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路:第一步在树1中查找与根节点的值一样的节点,这实际上就是树的遍历。对于二叉树这种数据结构熟悉的人来说自然知道可以用递归的方法去遍历,也可以用循环的方法去遍历。由于递归的代码实现比较简洁,面试时如果没...

2019-04-28 13:46:32

阅读数 6

评论数 0

剑指offer-合并两个排序链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路:链表1的头节点的值小于链表2的头节点的值,因此链表1的头节点将是合并后链表的头节点。 public class Solution { public ListNode Merge(List...

2019-04-28 12:43:09

阅读数 7

评论数 0

剑指offer-反转链表

输入一个链表,反转链表后,输出新链表的表头。 解题思路:原地反转链表,使用三个指针完成。 public class Solution { public ListNode ReverseList(ListNode head) { if(head==null||head.next==null)...

2019-04-28 10:49:28

阅读数 5

评论数 0

剑指offer-链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个结点。 import java.util.HashMap; import java.util.Map; public class Solution { public ListNode FindKthToTail(ListNode head,int k...

2019-04-26 14:12:14

阅读数 7

评论数 0

剑指offer-调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解题思路:使用类似冒泡排序的算法。 public class Solution { public void reOrde...

2019-04-19 16:45:37

阅读数 6

评论数 0

剑指offer-数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 解题思路: 当指数为负数的时候,可以先对指数求绝对值,算出次方的结果之后再取倒数。 1.循环法: public static double Power(double base, int ...

2019-04-18 15:50:18

阅读数 9

评论数 0

剑指offer-机器人的运动范围

地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+...

2019-04-13 21:14:30

阅读数 28

评论数 0

剑指offer-矩阵中的路径(回溯法)

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 ...

2019-04-13 18:18:17

阅读数 40

评论数 0

剑指offer-旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 1.常规方法: im...

2019-04-13 16:18:42

阅读数 4

评论数 0

排序-快排

原理:对于一组给定的记录,通过一趟排序后,将原序列分为两个部分,其中前一部分的所有记录均比后一部分的所有记录小,然后再依次对前后两个部分的记录进行快速排序,递归该过程,直到序列中的所有记录均有序为止。 方法一: public class QuickSort { public static voi...

2019-04-12 15:33:01

阅读数 4

评论数 0

剑指offer-矩形覆盖

我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路:将问题从简单推向复杂。 当大矩形为21时,小矩形只有1种覆盖方法。 当大矩形为22时,小矩形有2种覆盖方法。 当大矩形为23时,小矩形有3种覆盖方法。 … 当大矩...

2019-04-12 12:39:10

阅读数 10

评论数 0

剑指offer-变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路: f(1) = 1 f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数。 f(3) = f(3-1) + f(3-2) +...

2019-04-12 12:15:24

阅读数 3

评论数 0

剑指offer-跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 public class Solution { public int JumpFloor(int target) { if(target<=...

2019-04-12 12:00:28

阅读数 2

评论数 0

剑指offer-斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 解题思路:该题有两种解题方法,第一种使用循环解决;第二种使用递归解决。无论使用循环或者递归方法,都要注意输出的边界条件判断。另外使用递归方法时,应注意递归停止条件。 1....

2019-04-12 11:02:26

阅读数 4

评论数 0

剑指offer-用两个栈实现队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack&l...

2019-04-12 10:14:57

阅读数 3

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭