剑指offer
qq_40955824
努力,加油。☀️
展开
-
剑指offer-------从重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 知识点: 二叉树的遍历0:通常有前序,中序和后续三种。 前序遍历:根-左-右,就是遍历树的时候,先遍历根节点然后再遍历左子节点最后遍历根节...原创 2019-05-01 20:51:02 · 111 阅读 · 0 评论 -
剑指offer------二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路: 他是要找一个整数的文件中序列中有多少个1,这样就要把它化成二进制进行分析。 方法一: 当一个数不是0 的时候,那么他的二进制序列中至少有一个1,如果促使把这个整数-1,那么在lli右边最近的一个1就会变为0,而他后边的0,都会变为1.这就相当于给离右边最近的1后边的而至今数都取反了。而,离右边最近的...原创 2019-05-15 17:13:14 · 147 阅读 · 0 评论 -
剑指offer------从上往下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 举例: 如果给如图的二叉树,题目的要求就是把二叉树的节点按每一层输出 算法思想: 1.我们可以借助双端队列,来保存二叉树的节点,用一个链表来保存每一层二叉树节点里的值 2.当二叉树为空时,直接返回链表(此时,链表为空,但是不能直接返回null因为回报nullPointException异常)。 如果二叉树不为空,直...原创 2019-05-06 22:21:44 · 124 阅读 · 0 评论 -
剑指offer------合并并排序两个链表
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 算法描述: 1.先判断list1和list2 里面有没有空的链表,如果有直接返回另一条链表 2.创建新链表head ,然后当两个链表都不为空时,比较两个链表的元素大小,把里面小的值插入到新链表中,然后该节点对应的链表向后移动一位,继续下一轮比较。 3.当两个链表中有一个链表排序完成时...原创 2019-05-01 14:11:29 · 267 阅读 · 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) + f(3-3) ... f(n) = f(n-1) + f(n-2) + f(n-3) ...原创 2019-04-30 21:58:07 · 188 阅读 · 0 评论 -
剑指offer--------栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 栈的特点:先进后出 算法思路: 1.利用一个辅助栈来模拟压入和弹出的...原创 2019-05-05 16:08:15 · 178 阅读 · 0 评论 -
剑指offer------树的子结构
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 算法分析: 题目的意思就是判断一个树,是不是另一个树的子结构 1.在A中去找和B树根节点的值相同的节点,找不到,那么B树不是A树的子树,找到了进入2 2.根据在A中找到的根节点,分别去判断它的左右子树是否和B树的左右子树相同, 1)当在A中找到了 和B根节点一样的节点,则继续判断A的左...原创 2019-05-04 12:36:17 · 107 阅读 · 0 评论 -
剑指offer--------调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序, 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分, 并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路: 因为它要保证奇数和偶数的前后顺序,所以它是要求稳定性的 1,插排 2,冒泡排 3,快排不稳定,不适用于这道题 4,新建一个数组,空间换时间 方法一:用冒泡的方法,把相邻的奇数放前边去,把偶数放后...原创 2019-05-04 10:12:29 · 116 阅读 · 0 评论 -
剑指Offer------左旋转字符串
题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 方法一:利用Java里面的StringBuffer类的 substring()方法截取字...原创 2019-05-03 20:17:22 · 126 阅读 · 0 评论 -
剑指offer------链表中倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路: 1.利用快慢指针方法,让快的指针先走k个节点 2.然后让慢的指针再和快指针一起走,当快指针为null时,说明已经走到了链表的末尾, 3.此时慢指针就是当前的第k个节点 方法一:快慢指针法 /* public class ListNode { int val; ListNode next = null...原创 2019-05-02 23:08:01 · 91 阅读 · 0 评论 -
剑指offer------旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路: 1.因为输入进去的是一个非减的排序数组,即也就是一个递增的数组。 2.所以只要找到旋转过的数...原创 2019-05-02 18:00:02 · 126 阅读 · 0 评论 -
剑指offer--------二叉树的后续遍历
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 二叉树的前序,中序,后序遍历参见这个博客https://blog.csdn.net/qq_40955824/article/details/89738830 后序遍历:先遍历左子树节点,在遍历右子树节点,最后遍历根节点 补充: 二叉查...原创 2019-05-11 20:43:09 · 148 阅读 · 0 评论