剑指offer算法
2NaCl
主攻Java后端开发与云计算Paas平台、离线大数据平台相关
展开
-
(Java)leetcode 56. 合并区间
题目解读:我们的目的是将多个区间,根据覆盖的情况,相互合并成多个大的区间。每一个数组只会有两种状态,一种是保持原样,一种是和其他的数组结合成一个大数组。解题思路 :我们目前没有一个很好的方法,可以确定每一个一维数组是保持原样,还是和其他数组结合,所以我们就得有一种能力去搜寻这样的数组。有一个很好的方法就是,将二维数组,按照一维数组的第一个数字去进行排序。比如,[3,5] [2,4],我们应该...原创 2020-03-09 23:11:18 · 255 阅读 · 0 评论 -
(Java)leetcode 92. 反转链表 II
解题思路: 我们大概可以以这个题目给的情景给一个举例。设pre为前驱节点,cur为当前节点。当我们遍历到2的时候,2.next=3,pre的next节点是2,这时候,我们让2的后继变成前驱的后继,也就是2.next=pre.next,然后顺序就会变成1 3 2 4 5 ,这个时候,pre节点还是1,而2.next就变成了4。这时候,我们再让2.next=pre.next,顺序就会变成1 4 3 ...原创 2020-03-08 22:03:48 · 746 阅读 · 0 评论 -
(Java算法)剑指offer-面试题55 - II. 平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7]返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]返回 false 。题目解释: 首先我们要明确平衡树的概念,并非是根到叶子节点的路径长度总和相差...原创 2020-03-07 15:43:42 · 257 阅读 · 0 评论 -
(Java算法)剑指offer-面试题68 - I. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2...原创 2020-03-07 02:56:34 · 290 阅读 · 0 评论 -
(Java算法)剑指offer-面试题59 - I. 滑动窗口的最大值
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 ...原创 2020-03-06 00:11:13 · 314 阅读 · 0 评论 -
(Java算法)剑指offer-面试题52. 两个链表的第一个公共节点
输入两个链表,找出它们的第一个公共节点。 如下面的两个链表:其实原题解感觉写的挺好的,本题的思路主要采用的是双指针的操作,简单来说,就是两个指针AB,分别对应两条链表的头结点headA,headB,然后往后面一步一步的推进,当其中一个指针走到尽头的时候,重新开始遍历另一条链表,另一个也是一样,当两个node相同的时候,也就是相遇的时候。/** * Definitio...原创 2020-03-05 00:21:36 · 274 阅读 · 0 评论 -
(Java算法)剑指offer-面试题68 - II. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:&n...原创 2020-03-04 23:40:16 · 238 阅读 · 0 评论