![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
HnuWyd
这个作者很懒,什么都没留下…
展开
-
剑指Offer—二叉树的镜像
二叉树的镜像题目解题思路:判断当前节点是否存在,如果存在就交换该节点的左右孩子,依次递归。/** * 递归方法 * 如果当前节点存在就交换该节点的左右孩子,依次递归 * @param root */public void Mirror(TreeNode root) { if (root==null){ return; } cha...原创 2018-05-02 15:14:11 · 148 阅读 · 0 评论 -
剑指Offer—顺时针打印矩阵
顺时针打印举证题目解题思路:依次读取上边框、右边框、下边框、左边框。读取之后行列变量进行改变。/** * 依次读取上边框、右边框、下边框、左边框 * 读取之后行列变量进行改变 * @param matrix * @return */public ArrayList<Integer> printMatrix(int [][] matrix) { ...原创 2018-05-02 15:50:27 · 183 阅读 · 0 评论 -
剑指Offer—包含min函数的栈
包含min函数的栈题目解题思路:定义两个栈,一个正常存放对栈进行操作,另一个一直存放最小元素。private Stack<Integer> stack = new Stack();private Stack<Integer> minStack = new Stack();public void push(int node) { stack.p...翻译 2018-05-02 16:11:28 · 154 阅读 · 0 评论 -
剑指Offer—栈的压入、弹出序列
剑指Offer—栈的压入、弹出序列题目解题思路:新建一个栈模拟栈的压入弹出过程/** * 新建一个栈模拟压栈和弹出过程 * @param pushA * @param popA * @return */public boolean IsPopOrder(int [] pushA,int [] popA) { //建立一个辅助栈来模拟压栈的过程 Sta...翻译 2018-05-03 17:27:23 · 166 阅读 · 0 评论 -
剑指Offer—二叉树分层打印
剑指Offer—二叉树分层打印题目解题思路:建立一个队列,存放结点,创建两个指针指向最近结点和行尾结点/** * 分层遍历二叉树(使用队列实现) * 1、新建队列,且创建两个临时节点元素last和nlast,初始值均为头结点,栈顶元素压入队列 * 2、循环遍历队列,如果不为空,队头元素出队赋值给node,并打印 * 如果队头元素存在左孩子,左孩子入队,左孩子赋...原创 2018-05-17 17:08:25 · 319 阅读 · 0 评论 -
剑指Offer—反转链表
剑指Offer——反转链表题目解题思路一:我们可以用栈的方式,把链表中的元素都压栈,改变next域,然后一次弹出,时间复杂度稍高。/** * 使用栈的方式 * @param head 头结点 * @return 头结点 */public ListNode ReverseList(ListNode head) { Stack<L...原创 2018-04-28 19:23:55 · 123 阅读 · 0 评论 -
剑指Offer—合并两个排序的链表
合并两个排序链表题目题目描述解题思路一:递归方式,节点之间两两比较直到某个链表为空。/** * 使用递归的方式 使节点之间相互比较 * @param list1 * @param list2 * @return */public ListNode Merge1(ListNode list1,ListNode list2) { if (list1=...原创 2018-04-28 19:26:38 · 114 阅读 · 0 评论 -
剑指Offer—链表中倒数第K个节点
剑指Offer之——链表中倒数第K个节点题目解题思路:解题思路:设连链表的长度为N,并定义两个指针p1,p2分别指向链表的头节点,首先p1向后移动K个节点,则剩下N-K个节点,然后指针p1和指针p2同时向后移动,直到节点p1为null,则p1一共移动了N个节点,指针p2一共移动了N-(N-K)=K个节点;返回节点p2。代码 /** * 解题思路:设连链表的长度为N...原创 2018-04-28 19:27:33 · 125 阅读 · 0 评论 -
剑指Offer—树的子结构
树的子结构题目解题思路一:递归方式,依次把根节点、做孩子节点、有孩子节点作为根节点递归判断,只要有一个返回为true则就是子结构。判断的过程也是递归的,先判断根节点、左孩子是否一样,再判断右孩子。public boolean HasSubtree(TreeNode root1,TreeNode root2) { //如果root1和root2都为空则直接返回false...原创 2018-04-28 19:29:18 · 159 阅读 · 0 评论