![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
数据结构
Mason97
这个作者很懒,什么都没留下…
展开
-
复杂链表的复制
【LeetCode】面试题35. 复杂链表的复制解题方法:建立HashMap<>class Solution { public Node copyRandomList(Node head) { if(head == null) return null; Node newHead = new Node(head.val);//建立我们新链表...原创 2020-03-10 12:04:06 · 79 阅读 · 0 评论 -
求二叉树中的最大直径
LeetCode 543. 二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。自己的思路:非常不好一个二叉树的最大直径 = max { 左子树的最大直径,右子树的最大直径,左子树深度+右子树深度 }class Solution { //思路一个二叉树的最大直径,应该是根节点左子树的深度加上右子树的深度...原创 2020-03-10 10:31:55 · 748 阅读 · 0 评论 -
翻转单词顺序
来源:力扣(LeetCode)https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/面试题58 - I. 翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。...原创 2020-03-09 14:18:19 · 393 阅读 · 0 评论 -
找出数组中最小的k个数
LeetCodehttps://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/面试题40. 最小的k个数解法一:O(nlogn)快速排序,时间复杂度为nlogn,然后前k个元素就是最小的k个数class Solution { public int[] getLeastNumbers(int[] arr, int k) {...原创 2020-03-07 19:49:50 · 3104 阅读 · 0 评论 -
怎么判断一个二叉树是不是平衡二叉树?
https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof/题目描述:面试题55 - II. 平衡二叉树输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。代码: (1 ms) (42 MB)我定义了一个叫做method的成员方法,可以求一个二叉树...原创 2020-03-07 13:49:29 · 394 阅读 · 0 评论 -
二叉树找到两个结点的最近公共祖先
面试题68 - I. 二叉搜索树的最近公共祖先https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/题目描述:思路:这是一个二叉搜索树,根节点左边的数都小于根节点,根节点右边的数都大于根节点。如果两个结点的值都小于根节点的值,两个结点一定都在树的左边。都大于根节点的...原创 2020-03-05 13:08:46 · 891 阅读 · 0 评论 -
【LeetCode】面试题54. 二叉搜索树的第k大节点
https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/题目描述:给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 13/ \1 4\2输出: 4自己的解法:(13 ms)(41.1 MB)层序遍历,将结点...原创 2020-03-04 18:10:11 · 146 阅读 · 0 评论 -
【LeeCode】面试题25. 合并两个排序的链表
https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/问题描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4遍历方法:...原创 2020-03-02 14:48:20 · 103 阅读 · 0 评论 -
【LeeCode】面试题55 - I. 二叉树的深度
题目描述:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。代码:递归算法(0 ms)(38.9 MB)maxDepth()方法可以求出一个树的最大深度,递归的思路。 public int maxDepth(TreeNode root) { if (root == null) return...原创 2020-03-02 12:13:49 · 239 阅读 · 0 评论 -
【LeeCode】637. 二叉树的层平均值
题目描述:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.思路:类比二叉树的层序遍历,建立一个辅助的队列,在队列中进行遍历,如果此结点有左儿子,将其入队,如果有右儿子,将其入队,接着沿队列向下遍历。这道题目中要求计算每一层的平均值,故如何知道队列中的哪些结点是这一层的呢?初到一层的结点的时候,统计一下队列中元素的个数就可以了,因为Queue<>接口实现了Collect...原创 2020-03-02 11:40:33 · 149 阅读 · 0 评论 -
【LeeCode】82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3解法:这个方法能够返回一个head,引领着一个不重复的链表;如果输入的head是...原创 2020-03-01 19:30:25 · 126 阅读 · 0 评论 -
【LeeCode】155. 最小栈(赋予栈获得所有数最小值的功能)
【LeeCode】155. 最小栈(赋予栈获得所有数最小值的功能)设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/pro...原创 2020-03-01 17:30:40 · 102 阅读 · 0 评论 -
二叉树【汇总】
目录1 二叉树的基本概念1.1 结点的度1.2 叶结点1.3 分枝结点/终端结点1.4 左孩子、右孩子、双亲1.5 路径、路径长度1.6 祖先、子孙1.7 结点的层数1.8 树的深度1.9 树的度1.10 满二叉树、完全二叉树1.11 大顶堆和小顶堆2 性质1 二叉树的基本概念1.1 结点的度结点所拥有的子树的个数就是结点有几个儿子1.2 叶结点度为0的结...原创 2020-02-27 00:00:52 · 159 阅读 · 0 评论