![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offerjava版本
灯火阑珊不知处
这个作者很懒,什么都没留下…
展开
-
剑指Offer面试题11java版本
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。分析:此题最直观的的解法是。从头到尾遍历一遍数组,然后就能选取最小的数字。时间复杂度为O(n)。 除此之外可以用二分原创 2018-04-22 20:47:58 · 230 阅读 · 0 评论 -
剑指Offer面试题30包含min函数的栈java版
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 分析:采用辅助栈import java.util.Stack;import java.util.*;public class Solution { Stack<Integer> data = new Stack<Integer>(); Stack<Integer> minstack = new Sta原创 2018-04-28 22:54:00 · 239 阅读 · 0 评论 -
剑指Offer面试题29:顺时针打印矩阵java版
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.。 分析: 由于是从外圈到内圈的顺序依次打印的,所以我们可以把矩阵想象成若干个圆。用一个循环来打印矩阵,每次打印矩阵中的一个圆...原创 2018-04-27 23:29:36 · 196 阅读 · 0 评论 -
剑指Offer面试题27java版本
题目:操作给定的二叉树,将其变换为源二叉树的镜像。 分析:先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有非叶节点的左、右子节点之后,就得到了树的镜像。 代码:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;原创 2018-04-27 20:48:30 · 200 阅读 · 0 评论 -
剑指Offer面试题32:从上到下打印二叉树java版
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 分析:题目的要求即层次遍历二叉树。可实现的方法是利用队列,每次把根节点先存入,然后依次输出该根节点,判断该根节点有无左右节点,如果有左右节点的话,依次存入队列。然后队列再输出一个节点,并将这个输出节点作为根节点,然后判断该根节点有无左右节点,如此循环下去。代码:public class Solution { public Arr原创 2018-05-03 21:04:46 · 170 阅读 · 0 评论 -
剑指Offer面试题31栈的压入和弹出序列java版本
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)分析:建立一个辅助栈。 借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈原创 2018-05-03 20:04:12 · 191 阅读 · 0 评论 -
剑指Offer面试题26java版
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 分析:首先试着在树A中找到值为树B的根节点的值的节点。然后遍历两棵树的左右节点。 如果找不到在树A中找到值为树B的根节点的值的节点。那么树A的根节点分别取左取右依次比较。链接:https://www.nowcoder.com/questionTerminal/6e196c44c7004d15b1610b9原创 2018-04-23 21:59:41 · 234 阅读 · 0 评论 -
剑指Offer面试题25java版
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 分析:此题分为递归和非递归 非递归版本:public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { ListNode result = null; ListNo原创 2018-04-23 20:51:14 · 171 阅读 · 0 评论 -
剑指Offer面试题21java版
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 分析: 方法一:容易想到的是构造另外一个数组,先把原数组奇数部分依次放入,再把偶数部分依次放入。时间复杂度是O(n),空间复杂度O(n) 方法二:采用冒泡排序的思想 两个指针一个指针从前开始,一个指针从后开始原创 2018-04-23 11:35:55 · 209 阅读 · 0 评论 -
剑指Offer面试题33二叉搜索树的后序遍历序列java版
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 分析:在后序遍历序列中,最后一个数字是树的根节点的值。数组中前面的数字可以分为两部分:第一部分是左子树节点的值,它们都比根节点的值小;第二部分是右子树节点的值,它们都比根节点的值大。所以先取数组中最后一个数,作为根节点。然后从数组开始计数比根节点小的数,原创 2018-05-07 16:23:35 · 1467 阅读 · 0 评论