剑指offer
慢行慢行
这个作者很懒,什么都没留下…
展开
-
剑指Offer:剪绳子(动态规划、贪婪算法)
问题描述给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)输出描述:输...原创 2019-11-20 17:15:45 · 194 阅读 · 0 评论 -
剑指Offer:包含main函数的栈(借助辅助栈)
问题描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解题思路笔试时,能通过为大。如果能使用 Java 库中的数据数据和方法就尽量使用。思路:对 Stack 的原有方法进行封装,数据存入栈 data之中,并借助一个辅助栈 min 来存放最小值。入栈时,data 栈正常入栈;然后将 node 与 min栈的栈顶元素比较大小,如果 mi...原创 2019-11-20 17:14:40 · 133 阅读 · 0 评论 -
剑指offer(Java实现) 顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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-09-18 19:46:37 · 115 阅读 · 0 评论 -
剑指offer(Java实现) 二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路先找到右子树的开始位置,然后分别进行左右子树递归处理。(1)寻找右子树的开始位置 在二叉搜索树的后序遍历结果中,最后一个元素为这棵树的根节点;因此,将最后一个元素作为比较的标准值,将结果数组分为两段,若后序遍历结果正确,则比最后一个元...原创 2019-09-15 17:21:41 · 261 阅读 · 0 评论 -
剑指offer(Java实现) 从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路利用队列(链表)辅助实现。代码实现import java.util.ArrayList;import java.util.LinkedList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode r...原创 2019-09-15 17:20:59 · 216 阅读 · 0 评论 -
剑指Offer(Java实现)栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但4,3,5,1,2 就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路用栈来压入弹出元素,相等则出栈。将数组 pushA 中的元素依次...原创 2019-09-15 17:20:09 · 140 阅读 · 0 评论 -
剑指Offer(Java实现)把二叉树打印成多行
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题思路利用辅助空间链表或队列来存储节点,每层输出。代码实现import java.util.ArrayList;import java.util.LinkedList;/*public class TreeNode { int val = 0; TreeNode left = null; ...原创 2019-09-02 19:50:45 · 171 阅读 · 0 评论 -
剑指Offer(Java实现)按之字形顺序打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解题思路方法一:利用两个栈的辅助空间分别存储奇数偶数层的节点,然后打印输出。方法二:使用链表的辅助空间来实现,然后,将结果ArrayList<ArrayList<>>中的偶数位置处的ArrayList<>...原创 2019-09-02 12:09:31 · 490 阅读 · 0 评论 -
剑指Offer(Java实现)扑克牌顺子
扑克牌顺子题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13...原创 2019-08-27 20:42:08 · 548 阅读 · 0 评论 -
剑指Offer(Java实现)重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路先找出根节点,然后利用递归方法构造二叉树代码实现import java.util.*;/** * Definition for bi...原创 2019-08-27 20:40:57 · 103 阅读 · 0 评论 -
剑指offer(Java实现) 求1+2+3+…+n
题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:题目要求不使用 if,则异常输入以边界条件的判断可以使用逻辑与和boolean类型进行处理;题目要求不使用 for、while等循环语句,则可以使用递归替代循环,进行累加。代码实现:public class Solution { ...原创 2019-04-14 20:46:10 · 342 阅读 · 0 评论 -
剑指offer(Java实现) 平衡二叉树
题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树思路:根据平衡二叉树的特性:平衡因子的绝对值 <= 1。因此,本题的重点应在于求解左子树、右子树的深度。代码实现:public class Solution { public boolean IsBalanced_Solution(TreeNode root) { if (root == null) {...原创 2019-04-14 20:03:25 · 295 阅读 · 0 评论