题目 例如 1-2-3-4 删除2,1-2-3-4-5 删除3 例如 a=1,b =2 java代码 /** * @Description:删除中间节点和a/b处节点 * @Author: lizhouwei * @CreateDate: 2018/4/6 10:12 * @Modify by: * @ModifyDate: */ public class Chapter2_3 { //删除中间节点 public Node removeMidNode(Node head) { if (head…
原文链接 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现.针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失.“刷”完本书后,你就是“题王”!__eol__本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化.书中将所有的面试题从难到易依次分为“将.校.尉.士”四个档次,…
题目 在单链表和双链表中删除倒数第K个节点 java代码 /** * @Description:在单链表和双链表中删除倒数第K个节点 * @Author: lizhouwei * @CreateDate: 2018/4/6 9:14 * @Modify by: * @ModifyDate: */ public class Chapter2_2 { public Node removeKNode(Node head, int k) { if (head == null || k < 1) { re…
题目 遍历二叉树的神级方法 morris java代码 package com.lizhouwei.chapter3; /** * @Description:遍历二叉树的神级方法 morris * @Author: lizhouwei * @CreateDate: 2018/4/14 17:15 * @Modify by: * @ModifyDate: */ public class Chapter3_5 { //morris中序 public void morrisInOrder(Node h…
题目描述 给定一个单链表的表头节点head,实现一个调整单链表的函数,是的每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点. 题解 内部函数reverse实现链表beg到end的翻转,以及与l和r的连接. 外部函数reverseKNodes实现区间的移动(即四个实参的更新),以及整个链表头节点的赋值. 时间复杂度O(n),额外空间复杂度O(1) 代码 public class Main { public static void main(String args[]) { Nod…
[题目]给定链表的头节点head,实现删除链表的中间节点的函数.例如:不删除任何节点:1->2,删除节点1:1->2->3,删除节点2:1->2->3->4,删除节点2:1->2->3->4->5,删除节点3:进阶:给定链表的头节点head.整数a和b,实现删除位于a / b处节点的函数.例如:链表:1->2->3->4->5,假设a / b的值为r.如果r等于0,不删除任何节点:如果r在区间(0,1 / 5]上,删除节点…
[题目]分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点.[要求]如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1).[题解]从头遍历链表,每移动一次,K--,直至移动到链表尾部,此时k>0,说明k太大,链表不用删除k==0,链表长度即是k, 删除头结点即可k<0,再次重头遍历链表,每移动一次,k++,当k==0时,此时结点为要删除结点的前结点,使其指向下一个结点即可双向链表一样,只不过需要注意前结点就好 #include <i…
  第1章栈和队列 1设计一个有getMin功能的栈(士★☆☆☆) 1由两个栈组成的队列(尉★★☆☆) 5如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8猫狗队列(士★☆☆☆)10用一个栈实现另一个栈的排序(士★☆☆☆) 13用栈来求解汉诺塔问题(校★★★☆) 14生成窗口最大值数组(尉★★☆☆) 19构造数组的MaxTree(校★★★☆) 22求最大子矩阵的大小(校★★★☆) 26最大值减去最小值小于或等于num的子数组数量(校★★★☆) 31第2章链表问题34打印两个有序链表的公共部分(…
[问题]介绍一种时间复杂度O(N),额外空间复杂度O(1)的二叉树的遍历方式,N为二叉树的节点个数无论是递归还是非递归,避免不了额外空间为O(h),h 为二叉树的高度使用morris遍历,即利用空节点空间morris遍历:[思路:]空间复杂度O(1)的要求很严格.常规的递归实现是显然不能满足要求的[其空间复杂度是树的深度O(h)].本篇文章介绍著名的Morris遍历,该方法利用了二叉树结点中大量指向null的指针. 常规的栈结构遍历方式,遍历到某个节点之后并不能回到上层的结点,这是由二叉树本身的…
题目 题解 法一: 按照递归的思维去想: 递归终止条件 递归 返回值 1 如果p.q都不在root为根节点的子树中,返回null 2 如果p.q其中之一在root为根节点的子树中,返回该节点 3 如果p.q都在root为根节点的子树子树中,返回root节点 代码逻辑: 1 如果是遍历到null/node1/node2 => 会返回对应节点:null/node1/node2. 遍历左右子树: 2 如果两个子树都含node1/node2(因为二叉树中无重复元素,所以肯定是一边含一种node)=>…