![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
许愿offer
cokeoscar
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 68 - II. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]一次遍历/** * Definition for a binary tree node. * public class TreeNode { * i原创 2021-02-04 22:48:06 · 64 阅读 · 0 评论 -
剑指 Offer 37. 序列化二叉树
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; }原创 2021-02-02 17:48:43 · 68 阅读 · 0 评论 -
剑指 Offer 33. 二叉搜索树的后序遍历序列
题要输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。难点单支树输入:{1,2,3,4,5}对于仅有单孩子节点的递归分治解法一递归出口:有单个子节点或无子节点 :r - l <= 1, 则return true右子树区间内的所有节点都应大于根节点,否则return falseclass Solution { public boolean verifyPostorder(原创 2021-02-02 11:40:24 · 40 阅读 · 0 评论 -
659. 分割数组为连续子序列——哈希表+优先级队列的应用
class Solution { public boolean isPossible(int[] nums) { Map<Integer, PriorityQueue<Integer>> map = new HashMap<Integer, PriorityQueue<Integer>>(); //建立哈希表;PriorityQueue是基于优先级堆的无界优先级队列 for(int x: nums){//原创 2021-01-06 12:45:54 · 112 阅读 · 0 评论 -
621. 任务调度器
哈哈 又是贪心,又是hashmap,又是medium写不出来,12月真难题目描述给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。原创 2021-01-06 12:45:36 · 97 阅读 · 0 评论 -
649. Dota2 参议院 循环队列的应用
class Solution { public String predictPartyVictory(String senate) { int n = senate.length(); Queue<Integer> radiant = new LinkedList<Integer>(); Queue<Integer> dire = new LinkedList<Integer>(); fo原创 2021-01-06 12:45:15 · 49 阅读 · 0 评论 -
1046. 最后一块石头的重量 大顶堆应用
class Solution { public int lastStoneWeight(int[] stones) { //默认为最小堆,使用Lambda表达式传入自己的比较器转换成最大堆 PriorityQueue<Integer> pq = new PriorityQueue<Integer>((a, b) -> b - a); for (int stone : stones) {原创 2020-12-30 10:22:13 · 50 阅读 · 0 评论 -
103. 二叉树的锯齿形层序遍历「双端队列」&广度优先遍历
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<List<Integer>> zigzagLevelOrder(Tree原创 2020-12-22 17:16:50 · 115 阅读 · 0 评论