剑指offer
吴春旭呀
为天地立心,为生民立命,为往圣继绝学,为万世开太平
展开
-
剑指offer(15)反转链表
反转链表就是 先把当前节点所指向的原节点存起来,这里用tmp表示,此时tmp的值为2; 然后使当前节点指向前一个节点(cur.next=pre),然后将当前节点的值赋给pre(pre=cur);再然后就是使tmp为当前节点(cur=tmp)。 就是改变节点所指方向后,整体后移。 public class Solution { public ListNode ReverseL...转载 2019-02-28 18:27:10 · 117 阅读 · 0 评论 -
剑指offer(12)旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路:总的来说左边的数组大于右边的数,用折半查找法,找到俩个字数组的分界点 import java.util.Ar...转载 2019-03-02 23:09:48 · 98 阅读 · 0 评论 -
剑指offer(21)从上往下打印二叉树
public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { //创建俩个数列,一个存放数,一个存放节点 ArrayList<Integer> list1 = new ArrayList<Integer>()...转载 2019-03-02 22:31:22 · 94 阅读 · 0 评论 -
剑指offer(23)二叉搜索树的后序遍历序列
前提:二叉搜索树的后续遍历由{左子数、右子树、根}组成,根的值小于右子树,大于左子树。 思路就是:后续遍历sequence,通过与根节点比较,找到左子树与右子树的分界点(i);如果如果分界点前面的数有大于根节点的,则返回false;否则递归遍历左子树和右子树,若果直到start>end还没返回false,则返回ture。 public class Solution { pub...转载 2019-03-02 22:25:46 · 104 阅读 · 0 评论 -
剑指offer(20)包含min函数的栈
import java.util.Stack; public class Solution { //创建俩个辅助栈,stack1用来存放压入的元素,stack2用来保存较小元素 Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new...原创 2019-03-01 20:40:28 · 112 阅读 · 0 评论 -
剑指offer(21)栈的压入、探出序列
链接:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106 思路:借用一个辅助的栈,遍历压栈顺序,先将第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相等以后开始出栈,出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压...转载 2019-03-01 20:20:58 · 143 阅读 · 0 评论 -
剑指offer(05)用两个栈实现队列
参考:https://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html 思路1:始终维护s1作为存储空间,以s2作为临时缓冲区。 入队时,将元素压入s1。 出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。 思路2如: 入队时,先判断s1是...原创 2019-02-25 09:38:02 · 129 阅读 · 0 评论 -
剑指offer(04)重建二叉树
题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 这道题困了我快俩天了,不得不记录以下,转载 2019-02-24 22:26:16 · 135 阅读 · 0 评论 -
剑指offer(17)树的子结构
1. 从根节点开始判断,判断树root2是不是root1的子树。 2. 如果不是,再递归判断root2是不是root1.left的子树。 3. 如果第二步没成立,则再判断root2是不是root1.right的子树。 4. 直到返回true,或者递归结束 下面程序是综合吸收多位道友的心得后,自己手撕的。 public class Solution { public boolea...转载 2019-02-28 18:20:17 · 116 阅读 · 0 评论 -
剑指offer(12)数值的整数次方
快速幂的算法太美了 对于if((b&1)==1)这是判断b是否为奇数: 例如:如果b=8(1000),即指数为8,进入循环时,b不是奇数,那么基数翻倍,现在base值为,然后b右移,此时b为4.进入下一个循环;此时b还不是奇数,base再翻倍,此时base的值为,b为2;然后base再翻倍,,然后现在b为1,进入if中,result=; 当b=7(111)时,b为奇数,result...转载 2019-02-28 18:27:41 · 161 阅读 · 0 评论