剑指Offer(Java版)第二十六题:输入两个整数序列,第一个序列表示栈的压入顺序, 请判断第二个序列是否为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 例如序列1、2、3、4、5是某栈的压栈序列, 序列5、4、3、2、1是该压栈序列对应的一个弹出序列, 但4、3、5、1、2就不可能是该压栈序列的弹出序列。
摘要:/*输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列5、4、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。 */ import java.
阅读全文
posted @
2020-03-16 22:45
桌子哥
阅读(246)
推荐(0)
剑指Offer(Java版)第二十五题:包含min函数的栈
摘要:/*包含min函数的栈 *///思路:设计一个辅助栈来放最小数import java.util.*; public class Class25 { Stack<Integer> data = new Stack<Integer>(); Stack<Integer> auxiliary = new S
阅读全文
posted @
2020-03-16 22:17
桌子哥
阅读(101)
推荐(0)
剑指Offer(Java版)第二十四题:顺时针打印矩阵
摘要:/*顺时针打印矩阵 */public class Class24 { public void printMatrix(int[][] matrix){ if(matrix == null || matrix.length <= 0){ return; }else{ printMatrixCircle
阅读全文
posted @
2020-03-16 21:53
桌子哥
阅读(128)
推荐(0)
剑指Offer(Java版)第二十三题:操作给定的二叉树,将其变换为源二叉树的镜像。
摘要:/* 操作给定的二叉树,将其变换为源二叉树的镜像。 *///思路:根据二叉树中序的特点,使用栈来实现或者使用递归来实现。将镜像反转的特点和二叉树中序遍历的程序结合起来就可以实现了。 import java.util.*; public class Class23 { static class Tre
阅读全文
posted @
2020-03-11 21:43
桌子哥
阅读(201)
推荐(0)
剑指Offer(Java版)第二十二题:输入两棵二叉树A和B,判断B是不是A的子结构。
摘要:/*输入两棵二叉树A和B,判断B是不是A的子结构。*///解题思路://1)对A进行遍历,寻找B的根子节点//2)接着在A中寻找是否含有B的结构。public class Class22 { static class TreeNode{ double val; TreeNode left = nul
阅读全文
posted @
2020-03-11 21:14
桌子哥
阅读(238)
推荐(0)
剑指Offer(Java版)第二十一题:链表中环的入口结点
摘要:/*链表中环的入口结点*///思路,使用两个指针,一个快,一个慢,如果快的指针与慢的指针同时直到同一个节点,那么存在环。public class Class21 { //复杂问题分解成为几个简单问题(本题分为三步:找出环中任一结点;得到环的个数;找到入口结点) static class ListNo
阅读全文
posted @
2020-03-11 16:48
桌子哥
阅读(149)
推荐(0)
剑指Offer(Java版)第二十题:输入两个单调递增的链表,输出两个链表合成后的链表, 当然我们需要合成后的链表满足单调不减规则。
摘要:import Class19.ListNode; /*输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。*/public class Class20 { static class ListNode{ int val; ListNode next = null
阅读全文
posted @
2020-03-11 16:09
桌子哥
阅读(217)
推荐(0)
剑指Offer(Java版)第十九题:输入一个链表,反转链表后,输出链表的所有元素。
摘要:/*输入一个链表,反转链表后,输出链表的所有元素。*/public class Class19 { static class ListNode{ int val; ListNode next = null; ListNode(int val){ this.val = val; } } //迭代法 p
阅读全文
posted @
2020-03-11 15:42
桌子哥
阅读(266)
推荐(1)
剑指Offer(Java版)第十八题:输入一个链表,输出该链表中倒数第k个结点。 为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。 例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。 这个链表的倒数第3个结点是值为4的结点。
摘要:/* 输入一个链表,输出该链表中倒数第k个结点。 为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。 例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。 这个链表的倒数第3个结点是值为4的结点。 */public class Class18 { //利
阅读全文
posted @
2020-03-09 22:05
桌子哥
阅读(362)
推荐(0)
剑指Offer(Java版)第十七题:输入一个整数数组,实现一个函数来调整该数组中数字的顺序, 使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分, 并保证奇数和奇数,偶数和偶数之间的相对位置不变。
摘要:/*输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变*/ import java.util.*; public class Class17 { public void shuzi
阅读全文
posted @
2020-03-09 21:40
桌子哥
阅读(659)
推荐(0)
剑指Offer(Java版)第十六题:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
摘要:/*给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 */public class Class16 { static class ListNode{ int val; ListNode next; public ListNode(int value, ListNode ne
阅读全文
posted @
2020-03-09 20:09
桌子哥
阅读(340)
推荐(0)
剑指Offer(Java版)第十五题:打印1到最大的n位数
摘要:/* 打印1到最大的n位数 *///一开始想到的是直接构造出最大数,然后逆序输出,把‘0’排除在外即可。看了一些网上的博客,要注意大叔情况,因此使用以下方法。public class Class15 { public void printNumber(int n){ if(n <= 0){ retu
阅读全文
posted @
2020-03-09 19:15
桌子哥
阅读(184)
推荐(0)
剑指Offer(Java版)第十四题:给定一个double类型的浮点数base和int类型的整数exponent。 求base的exponent次方。不得使用库函数,不需要考虑大数问题。
摘要:/*给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。不得使用库函数,不需要考虑大数问题。注意事项:不能用==比较两个浮点数是否相等,因为有误差。考虑输入值的多种情况。*/public class Class14 { public doub
阅读全文
posted @
2020-03-09 15:58
桌子哥
阅读(338)
推荐(0)
剑指Offer(Java版)第十三题:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。
摘要:/*请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。 * 例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 */public class Class13 { public int findNumOfOne(int a){ int count = 0; while
阅读全文
posted @
2020-03-08 19:29
桌子哥
阅读(466)
推荐(0)
剑指Offer(Java版)第十一题
摘要:public class Class112 { public boolean findPath(char[] matrix, int rows, int cols, char[] str){ boolean anchor[] = new boolean[matrix.length]; for(int
阅读全文
posted @
2020-03-08 18:52
桌子哥
阅读(204)
推荐(0)
剑指Offer(Java版)第十题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。
摘要:/* 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。*/public class Class10 { //因为是一个
阅读全文
posted @
2020-03-05 17:41
桌子哥
阅读(508)
推荐(0)
剑指Offer(Java版)第九题:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。
摘要:/*写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。*/ import java.util.*; public class Class9 { public int findFib(int a){ int sum = 1; if(a < 0){ throw new RuntimeEx
阅读全文
posted @
2020-03-05 16:24
桌子哥
阅读(745)
推荐(0)
剑指offer(Java版)第七题:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead, 分别完成在队列尾部插入结点和在队列头部删除结点的功能。
摘要:/*用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。*/ import java.util.*; public class Class8 { static class stackToQueue{
阅读全文
posted @
2020-03-05 15:30
桌子哥
阅读(710)
推荐(1)