- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 剑指 Offer 54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 /1输出: 4二叉树的定义:1.左子树上,所有节点的值<根节点的值;2.右子树上,所有节点的值...
2021-09-07 16:28:51
73
原创 剑指 Offer 32 - I. ll.lll从上到下打印二叉树【经典必会】
三道题:相同的部分:levelOrder层序遍历---->利用queue不同的部分:第一题-从左到右,全部放入一个小组 第二题-从左到右,每层作为一个小组 第三题-z型,每层作为一个小组剑指 Offer 32 - I. 从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:[3,9,20,null,null,15,7], 3 ...
2021-09-06 11:47:24
144
原创 剑指 Offer 55 - II. 平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例二: 3 / \9 20/ \ / \ ...
2021-09-02 11:38:21
70
原创 剑指 Offer 55 - I. 二叉树的深度
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。/** * Definition for a binary tree node. * public class TreeNode { * int val; * Tree...
2021-09-02 11:17:53
58
原创 剑指 Offer 68 - II. 二叉树的最近公共祖先(重点题!!!)
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。(相比二叉搜索树,范围更广,难度更大)百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, ...
2021-09-02 00:07:08
117
原创 剑指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,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6...
2021-09-02 00:07:01
66
原创 剑指Offer.27. 二叉树的镜像
请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1示例 1:输入:root = [4,2,...
2021-09-02 00:06:53
56
原创 【二叉树】剑指offer26.树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:3/ \4 5/ \1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false分析:树Tree的特点决定:优先考虑递归Recursion,其...
2021-09-01 17:56:57
70
原创 【二叉树】剑指offer07.重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 3/ \9 20 / \ 15 7示例 1: Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7]如何构建树Tree?1节点,2构建...
2021-09-01 17:53:55
71
原创 【链表】剑指offer.35.复杂链表的复制
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中, 每个节点除了有一个 next 指针指向下一个节点, 还有一个 random 指针指向链表中的任意节点或者 null。 分析:1.节点值value的复制:只需要new Node(value,,)就可以 2.节点指针(next,random)的复制(关键)HashMap<师傅,徒弟> 存储师傅徒弟的关系第一次遍历把每个值放入哈希map里再次遍历师傅,把恩仇录传...
2021-09-01 17:50:33
62
原创 【链表】剑指offer.25合并两个排序的链表(leetcode.21)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]分析:l1.val<l2.val? l1.val<l2.val:指向l1 l1.val>=l2.val:指向l2cur作用:串联成目标链表->指向比较的结果l1,l2作用:作为比较的基准->比较结果,向前移动边界条件处理两个链表长度不同...
2021-09-01 17:48:34
70
原创 【链表】反转链表(剑指offer24!!!!必会题)
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL输入: 1->2->3->4->5->NULL输出: NULL<-1<-2<-3<-4<-5方法:头插法Time:O(N) Space:0头插法:三步走(1暂存,2指向,3,归位)pre在第一个.
2021-09-01 17:46:44
66
原创 【链表】leetcode.141.链表中环的入口节点(剑指offer23)
给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置 (索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 输入:head = [3,2,0,-4], pos = 1...
2021-09-01 17:41:57
124
原创 【链表】leetcode.19.删除链表的倒数第n个节点(剑指offer22)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 输入:head = [1,2], n = 1 输出:[1] 思路:双指针法 1)指针fast:辅助slow找到倒数第n个节点 2)指针slow:进项删除节点(参考leetcode203) 解析: 关键:如何找到链表倒数第n个节点 fast和slow应...
2021-09-01 17:38:00
50
原创 【链表】leetcode.82.删除排序链表中的重复元素2(剑指offer18-3)
存在一个按升序排列的链表,给你这个链表的头节点 head , 请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。 输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5] 输入:head = [1,1,1,2,3] 输出:[2,3] 双指针法: 1)指针cur:从头到尾遍历,找到相邻值相同的node 2)指针pre:在cur前面用来进行删除 解析: 需要虚拟头结点,因为头结点和第二...
2021-09-01 17:36:01
94
原创 【链表】leetcode.83.删除排序链表中的重复元素(剑指offer18-2)
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素, 使每个元素 只出现一次 。 输入:head = [1,1,2] 输出:[1,2] 输入:head = [1,1,2,3,3] 输出:[1,2,3] 解析: 1)从头到尾遍历找到相邻值相同的node 2)把重复node删除,且保留一个 本题不需要虚拟头结点,因为即使前两个元素相同,也只是删除后一个。 也只需要移动到倒数第二个节点即可,因为最后两...
2021-09-01 17:34:27
55
原创 【链表】leetcode.203.移除列表元素(剑指offer18-1)
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点, 并返回新的头节点 。 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 解析: 1)从头到尾遍历,找与val相等的node 2)找到则把该node删除 cur在被删除结点之前才能操作,因为cur操作的是指针,指针指向下一个符合条件的val 需要一个虚拟头结点dummy...
2021-09-01 17:32:36
84
原创 leetcode.每日一题(石子游戏,博弈题)
class Solution { public boolean stoneGame(int[] piles) { return true; }}
2021-06-16 13:14:34
173
原创 【java基础学习】day1(基本类型和变量)
public class Demo01 { public static void main(String[] arg) { //变量:指代一个数,起变量名要知名知意 int userAge=5;//驼峰命名法,区分单词 /* * 1.变量不能使用"关键字" * 2.只能由字,字母,数字,下划线,$符。 * 3.不能由数字开头 */ ...
2021-06-16 12:07:20
68
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人