04 2021 档案

摘要:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p = [1,2,3], q = [1,2,3] 输出:true 示例 2: 输入:p = [1,2], q = [1,null,2] 输 阅读全文
posted @ 2021-04-29 14:47 kpwong 阅读(85) 评论(0) 推荐(0)
摘要:如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 : 二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。 偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增 奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减 阅读全文
posted @ 2021-04-29 14:41 kpwong 阅读(107) 评论(0) 推荐(0)
摘要:1. 题目 给定一棵有 n 个结点的二叉树,你的任务是检查是否可以通过去掉树上的一条边将树分成两棵,且这两棵树结点之和相等。 样例 1: 输入: 5 / \ 10 10 / \ 2 3 输出: True 解释: 5 / 10 和: 15 10 / \ 2 3 和: 15 样例 2: 输入: 1 / 阅读全文
posted @ 2021-04-29 14:15 kpwong 阅读(1100) 评论(0) 推荐(0)
摘要:给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2 给定的树 t: 4 / \ 1 2 返回 true,因为 t 阅读全文
posted @ 2021-04-29 13:58 kpwong 阅读(62) 评论(0) 推荐(0)
摘要:1. 题目 给定一棵二叉树,以逆时针顺序从根开始返回其边界。 边界按顺序包括左边界、叶子结点和右边界而不包括重复的结点。 (结点的值可能重复) 左边界的定义是从根到最左侧结点的路径。 右边界的定义是从根到最右侧结点的路径。 若根没有左子树或右子树,则根自身就是左边界或右边界。 注意该定义只对输入的二 阅读全文
posted @ 2021-04-29 13:48 kpwong 阅读(162) 评论(0) 推荐(0)
摘要:实现一个函数,检查一棵二叉树是否为二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 / \ 3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。 简单好 阅读全文
posted @ 2021-04-29 12:12 kpwong 阅读(65) 评论(0) 推荐(0)
摘要:给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。 所以结果应当返回修剪好的二叉 阅读全文
posted @ 2021-04-29 11:07 kpwong 阅读(70) 评论(0) 推荐(0)
摘要:给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下: 二叉树的根是数组 nums 中的最大元素。左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。右子树是通过数组中 最大值右边部分 递归构造出的最大二叉树。返回有给定数组 nums 构建的 最大二叉 阅读全文
posted @ 2021-04-29 10:32 kpwong 阅读(95) 评论(0) 推荐(0)
摘要:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 递归解法: /** * Defini 阅读全文
posted @ 2021-04-29 10:06 kpwong 阅读(25) 评论(0) 推荐(0)
摘要:我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树。 只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。 编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1 和 root2 给出。 示例: 输入:r 阅读全文
posted @ 2021-04-29 09:51 kpwong 阅读(89) 评论(0) 推荐(0)
摘要:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1: 输入:[1,1,1,1,1,null,1] 输出:true 示例 2: 输入:[2,2,2,5,2] 输出:false 解法:遍历二叉树,节点值放入Set 阅读全文
posted @ 2021-04-29 09:34 kpwong 阅读(64) 评论(0) 推荐(0)
摘要:从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉搜索树,输出所有可能生成此树的数组。 示例:给定如下二叉树 2 / \ 1 3 返回: [ [2,1,3], [2,3,1] ] 大佬写的。未仔细研究:) 搜索 使用一个queue存储下个所有 阅读全文
posted @ 2021-04-29 08:35 kpwong 阅读(63) 评论(0) 推荐(0)
摘要:给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。 进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗? 示例 1: 输入:root = [1,3,null,null,2] 输出:[3,1,null,null 阅读全文
posted @ 2021-04-29 08:28 kpwong 阅读(163) 评论(0) 推荐(0)
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 阅读全文
posted @ 2021-04-29 08:12 kpwong 阅读(38) 评论(0) 推荐(0)
摘要:1. 题目 给定一个二叉树,其中所有的右节点要么是具有兄弟节点(拥有相同父节点的左节点)的叶节点,要么为空将此二叉树上下翻转并将它变成一棵树, 原来的右节点将转换成左叶节点。返回新的根。 例子: 输入: [1,2,3,4,5] 1 / \ 2 3 / \ 4 5 输出: 返回二叉树的根 [4,5,2 阅读全文
posted @ 2021-04-29 08:01 kpwong 阅读(241) 评论(0) 推荐(0)
摘要:jmap: jconsole: 阅读全文
posted @ 2021-04-24 15:24 kpwong 阅读(41) 评论(0) 推荐(0)
摘要:top 定位哪个进程对CPU的占用过高 PS继续查看ps H -eo pid,tid,%cpu |grep 进程id ps H -eo pid,tid,%cpu |grep 2509 jstack 线程Id 阅读全文
posted @ 2021-04-24 14:37 kpwong 阅读(54) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2021-04-24 09:28 kpwong 阅读(85) 评论(0) 推荐(0)
摘要:输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如:给定的树 A: 3 / \ 4 5 / \ 1 2 给定的树 B: 4 / 1 返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。 示例 阅读全文
posted @ 2021-04-23 10:23 kpwong 阅读(40) 评论(0) 推荐(0)
摘要:在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则: 行数 m 应当等于给定二叉树的高度。 列数 n 应当总是奇数。 根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分为两部分(左下部分和右下部分)。你应该将左子树输出在左下部分,右子树输出在右下 阅读全文
posted @ 2021-04-22 17:17 kpwong 阅读(129) 评论(0) 推荐(0)
摘要:翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 /** * Definition for a binary tree node. * public class TreeNode { * int val; 阅读全文
posted @ 2021-04-22 16:41 kpwong 阅读(37) 评论(0) 推荐(0)
摘要:你有一棵二叉树,这棵二叉树有个小问题,其中有且只有一个无效节点,它的右子节点错误地指向了与其在同一层且在其右侧的一个其他节点。 给定一棵这样的问题二叉树的根节点 root ,将该无效节点及其所有子节点移除(除被错误指向的节点外),然后返回新二叉树的根结点。 自定义测试用例: 测试用例的输入由三行组成 阅读全文
posted @ 2021-04-22 16:33 kpwong 阅读(62) 评论(0) 推荐(0)
摘要:给定二叉树根结点 root ,此外树的每个结点的值要么是 0,要么是 1。 返回移除了所有不包含 1 的子树的原二叉树。 ( 节点 X 的子树为 X 本身,以及所有 X 的后代。) /** * Definition for a binary tree node. * public class Tre 阅读全文
posted @ 2021-04-22 16:27 kpwong 阅读(88) 评论(0) 推荐(0)
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true 示例 2: 输入:root = [1,2,2,3,3, 阅读全文
posted @ 2021-04-22 15:59 kpwong 阅读(53) 评论(0) 推荐(0)
摘要:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 示例:给定如下二叉树,以及目标和 target = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1 返回: [ [5,4,11, 阅读全文
posted @ 2021-04-22 15:27 kpwong 阅读(59) 评论(0) 推荐(0)
摘要:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3 示例 1: 输入: [1,6,3,2,5] 输出: false 示例 2: 输入: [1 阅读全文
posted @ 2021-04-22 14:43 kpwong 阅读(48) 评论(0) 推荐(0)
摘要:给定一棵二叉搜索树,请找出其中第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 / 阅读全文
posted @ 2021-04-22 14:22 kpwong 阅读(49) 评论(0) 推荐(0)
摘要:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] /** * Definition for 阅读全文
posted @ 2021-04-22 14:07 kpwong 阅读(39) 评论(0) 推荐(0)
摘要:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [ 阅读全文
posted @ 2021-04-22 14:04 kpwong 阅读(58) 评论(0) 推荐(0)
摘要:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向 为了让您更好地理解问题,以下面的二叉搜索树为例 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点, 阅读全文
posted @ 2021-04-22 13:51 kpwong 阅读(28) 评论(0) 推荐(0)
摘要:一、前序遍历 ArrayList<Integer> res = new ArrayList(); public void preOrderTraverse1(TreeNode root) { if (root != null) { // System.out.print(root.val+" "); 阅读全文
posted @ 2021-04-22 13:11 kpwong 阅读(219) 评论(0) 推荐(0)
摘要:任务调度优化是计算机性能优化的关键任务之一。在任务众多时,不同的调度策略可能会得到不同的总体执行时间,因此寻求一个最优的调度方案是非常有必要的。 通常任务之间是存在依赖关系的,即对于某个任务,你需要先完成他的前导任务(如果非空),才能开始执行该任务。我们保证任务的依赖关系是一棵二叉树,其中 root 阅读全文
posted @ 2021-04-22 12:02 kpwong 阅读(193) 评论(0) 推荐(0)
摘要:请完成一个函数,输入一个二叉树,该函数输出它的镜像 例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出: 4 / \ 7 2 / \ / \ 9 6 3 1 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] class Sol 阅读全文
posted @ 2021-04-22 11:24 kpwong 阅读(22) 评论(0) 推荐(0)
摘要:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 阅读全文
posted @ 2021-04-22 11:16 kpwong 阅读(45) 评论(0) 推荐(0)
摘要:请实现两个函数,分别用来序列化和反序列化二叉树。 示例: 你可以将以下二叉树: 1 / \ 2 3 / \ 4 5 序列化为 "[1,2,3,null,null,4,5]" 通常使用的前序、中序、后序、层序遍历记录的二叉树的信息不完整,即唯一的输出序列可能对应着多种二叉树可能性。题目要求的 序列化 阅读全文
posted @ 2021-04-22 10:30 kpwong 阅读(53) 评论(0) 推荐(0)
摘要:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 方法一:后序遍历(DFS)树的后序 阅读全文
posted @ 2021-04-22 09:49 kpwong 阅读(32) 评论(0) 推荐(0)
摘要:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 阅读全文
posted @ 2021-04-22 09:27 kpwong 阅读(52) 评论(0) 推荐(0)
摘要:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2, 阅读全文
posted @ 2021-04-22 09:17 kpwong 阅读(53) 评论(0) 推荐(0)
摘要:小扣有一个根结点为 root 的二叉树模型,初始所有结点均为白色,可以用蓝色染料给模型结点染色,模型的每个结点有一个 val 价值。小扣出于美观考虑,希望最后二叉树上每个蓝色相连部分的结点个数不能超过 k 个,求所有染成蓝色的结点价值总和最大是多少? 示例 1: 输入:root = [5,2,3,4 阅读全文
posted @ 2021-04-22 09:09 kpwong 阅读(181) 评论(0) 推荐(0)
摘要:方法三:迭代二分查找 public int findPeakElement(int[] nums) { //第二种方法不用左右加个边界 return helper(nums, 0, nums.length-1); } public int helper(int[] nums, int left, i 阅读全文
posted @ 2021-04-14 16:58 kpwong 阅读(46) 评论(0) 推荐(0)
摘要:/* * 15. 3Sum * 题意:找出数组中所有和为0的三元组合 * 难度:Medium * 分类:Array, Two Pointers * 注意:如何避免 List 重复元素 * Tips:lc15, lc16, lc923 */ import java.util.*; public cla 阅读全文
posted @ 2021-04-14 16:53 kpwong 阅读(57) 评论(0) 推荐(0)
摘要:/* * 146. LRU Cache * 题意:首先理解LRU思想,最久未被访问过的,最先被替换 * 难度:Hard * 分类:Design * 思路:hashmap + 双向链表。hashmap实现了O(1)的get,双向链表实现O(1)的put * Tips:能想到双向链表,就不难了 * lc 阅读全文
posted @ 2021-04-14 16:48 kpwong 阅读(57) 评论(0) 推荐(0)
摘要:import java.util.regex.Pattern; class Solution { String chunkIPv4 = "([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; Pattern pattenIPv4 = Pattern 阅读全文
posted @ 2021-04-14 16:29 kpwong 阅读(62) 评论(0) 推荐(0)
摘要:package code; /* * 141. Linked List Cycle * 题意:链表是否有环 * 难度:Easy * 分类:Linked List, Two Pointers * 思路:快慢指针 * lc142 */ public class lc141 { public class 阅读全文
posted @ 2021-04-14 16:27 kpwong 阅读(35) 评论(0) 推荐(0)
摘要:/* * 543. Diameter of Binary Tree * 题意:树中的最长路径 * 难度:Easy * 分类:Tree * 思路:和lc124思路一样,但lc124是Hard,这道竟然是Easy,哈哈哈 * Tips: */ public class lc543 { public cl 阅读全文
posted @ 2021-04-14 15:56 kpwong 阅读(45) 评论(0) 推荐(0)
摘要:方法一:排序首先将数组排序。 如果数组中全是非负数,则排序后最大的三个数相乘即为最大乘积;如果全是非正数,则最大的三个数相乘同样也为最大乘积。 如果数组中有正数有负数,则最大乘积既可能是三个最大正数的乘积,也可能是两个最小负数(即绝对值最大)与最大正数的乘积。 综上,我们在给数组排序后,分别求出三个 阅读全文
posted @ 2021-04-14 15:50 kpwong 阅读(173) 评论(0) 推荐(0)
摘要:class Solution { public int findMin(int[] nums) { int left = 0, right = nums.length - 1; int min = Integer.MAX_VALUE; // 宗旨 每次转换下标的时候,都会记录更新一下min whil 阅读全文
posted @ 2021-04-14 15:43 kpwong 阅读(38) 评论(0) 推荐(0)
摘要:/* * 121. Best Time to Buy and Sell Stock * 题意:股票买卖1次,最大利润 * 难度:Easy * 分类:Arryas, Dynamic Programming * Tips:lc121, lc309, lc188, lc123, lc714 */ publ 阅读全文
posted @ 2021-04-14 15:35 kpwong 阅读(43) 评论(0) 推荐(0)
摘要:public static boolean isValidBST(TreeNode root) { if(root==null) return true; return dfs(root, -Double.MAX_VALUE, Double.MAX_VALUE); // 注意Double.MIN_V 阅读全文
posted @ 2021-04-14 15:30 kpwong 阅读(52) 评论(0) 推荐(0)
摘要:/* * 300. Longest Increasing Subsequence * 题意:最长递增子数组,不一定是连续的 * 难度:Medium * 分类:Binary Search, Dynamic Programming * 思路:基本的思路是dp[i]记录以nums[i]结尾的最长长度,每次 阅读全文
posted @ 2021-04-14 15:24 kpwong 阅读(52) 评论(0) 推荐(0)
摘要:class Solution { public int[][] generateMatrix(int n) { int maxNum = n * n; int curNum = 1; int[][] matrix = new int[n][n]; int row = 0, column = 0; i 阅读全文
posted @ 2021-04-14 15:20 kpwong 阅读(46) 评论(0) 推荐(0)
摘要:import java.util.ArrayList; import java.util.List; /* * 119. Pascal's Triangle II * 题意:和118一样,就是输出不一样 * 难度:Easy * 分类:Array * 思路:记一下 ArrayList.set 方法,不 阅读全文
posted @ 2021-04-14 15:14 kpwong 阅读(39) 评论(0) 推荐(0)
摘要:class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<Integer>(); inorder(root, res); return res; 阅读全文
posted @ 2021-04-14 15:11 kpwong 阅读(35) 评论(0) 推荐(0)
摘要:/* * 62. Unique Paths * 题意:求从数组[0,0]走到[m,n]的不同路径数 * 难度:Medium * 分类:Array, Dynamic Programming * 思路:和lc63, lc64思路一样, arr存储的内容由路径数换成了和 */ public class l 阅读全文
posted @ 2021-04-14 15:06 kpwong 阅读(32) 评论(0) 推荐(0)
摘要:package code; /* * 25. Reverse Nodes in k-Group * 题意:每k个反转一下,不足k的不反转,直接接上 * 难度:Hard * 分类:Linked List * 思路:递归调用反转,反转完下一段的返回节点,节点这一段上 * Tips:lc25, lc206 阅读全文
posted @ 2021-04-14 15:00 kpwong 阅读(45) 评论(0) 推荐(0)
摘要:// start our "pointer" in the bottom-left class Solution { public boolean searchMatrix(int[][] matrix, int target) { // start our "pointer" in the bot 阅读全文
posted @ 2021-04-14 14:56 kpwong 阅读(36) 评论(0) 推荐(0)
摘要:import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; import java.util.Queue; public class lc103 { public class TreeNode { i 阅读全文
posted @ 2021-04-14 14:37 kpwong 阅读(42) 评论(0) 推荐(0)
摘要:import java.util.LinkedList; import java.util.Queue; class HitCounter { private Queue<Integer> q = new LinkedList<Integer>(); /** Initialize your data 阅读全文
posted @ 2021-04-14 14:21 kpwong 阅读(82) 评论(0) 推荐(0)
摘要:hi /* * 152. Maximum Product Subarray * 题意:连续子序列最大乘积 * 难度:Medium * 分类:Array, Dynamic Programming * 思路:保存最大,最小值,因为负负得正。dp不用保存数组,空间可以压缩。 * Tips:Product是 阅读全文
posted @ 2021-04-14 11:29 kpwong 阅读(36) 评论(0) 推荐(0)
摘要:给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1 阅读全文
posted @ 2021-04-14 11:22 kpwong 阅读(48) 评论(0) 推荐(0)
摘要:回溯法 class Solution { public List<List<String>> solveNQueens(int n) { List<List<String>> solutions = new ArrayList<List<String>>(); int[] queens = new 阅读全文
posted @ 2021-04-14 11:17 kpwong 阅读(50) 评论(0) 推荐(0)
摘要:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 阅读全文
posted @ 2021-04-14 10:59 kpwong 阅读(50) 评论(0) 推荐(0)
摘要:给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。 实现 Solution class: Solution(int[] nums) 使用整数数组 nums 初始化对象 int[] reset() 重设数组到它的初始状态并返回 int[] shuffle() 返回数组随机打乱后的结果 阅读全文
posted @ 2021-04-14 10:52 kpwong 阅读(62) 评论(0) 推荐(0)
摘要:输入:head = [[1,1],[2,1]] 输出:[[1,1],[2,1]] 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对 阅读全文
posted @ 2021-04-14 10:08 kpwong 阅读(48) 评论(0) 推荐(0)
摘要:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 示例 1: 输入:coins = [1, 2, 5], amount = 11 输出:3 解释:1 阅读全文
posted @ 2021-04-13 22:18 kpwong 阅读(64) 评论(0) 推荐(0)
摘要:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 示例 1: 输入:2 输出:1 解释:F(2) 阅读全文
posted @ 2021-04-13 21:28 kpwong 阅读(198) 评论(0) 推荐(0)
摘要:一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 'A' -> 1 'B' -> 2 ... 'Z' -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"111" 可以将 "1" 中的每个 "1" 映射为 "A" ,从而得到 "AAA 阅读全文
posted @ 2021-04-13 18:40 kpwong 阅读(97) 评论(0) 推荐(0)
摘要:给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。 如果小数部分为循环小数,则将循环的部分括在括号内。 如果存在多个答案,只需返回 任意一个 。 对于所有给定的输入,保证 答案字符串的长度小于 104 。 示例 1: 输入:numerat 阅读全文
posted @ 2021-04-13 15:10 kpwong 阅读(57) 评论(0) 推荐(0)
摘要:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 示例 1 阅读全文
posted @ 2021-04-13 15:02 kpwong 阅读(44) 评论(0) 推荐(0)
摘要:给定一个整数 n, 返回从 1 到 n 的字典顺序。 例如, 给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。 请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。 思路: 1 2 3 ... /\ /\ /\ 10 阅读全文
posted @ 2021-04-13 14:51 kpwong 阅读(64) 评论(0) 推荐(0)
摘要:1. 题目 给你两个 稀疏矩阵 A 和 B,请你返回 AB 的结果。你可以默认 A 的列数等于 B 的行数。 请仔细阅读下面的示例。 示例: 输入: A = [ [ 1, 0, 0], [-1, 0, 3] ] B = [ [ 7, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 1 ] 阅读全文
posted @ 2021-04-13 14:44 kpwong 阅读(275) 评论(0) 推荐(0)
摘要:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。 格雷编码序列必须以 0 开头。 示例 1: 输入: 2 输出: [0,1,3,2] 解释: 00 - 0 01 - 1 阅读全文
posted @ 2021-04-13 14:08 kpwong 阅读(74) 评论(0) 推荐(0)
摘要:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示 阅读全文
posted @ 2021-04-13 13:38 kpwong 阅读(59) 评论(0) 推荐(0)
摘要:用栈实现 比较好理解 class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { int len = prerequisites.length; if(len==0) return true; 阅读全文
posted @ 2021-04-13 12:30 kpwong 阅读(74) 评论(0) 推荐(0)
摘要:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 进阶: 一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。 你能想出一个 阅读全文
posted @ 2021-04-13 08:56 kpwong 阅读(58) 评论(0) 推荐(0)
摘要:给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 阅读全文
posted @ 2021-04-13 08:46 kpwong 阅读(71) 评论(0) 推荐(0)
摘要:已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7] 注意,数 阅读全文
posted @ 2021-04-13 08:33 kpwong 阅读(55) 评论(0) 推荐(0)
摘要:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之 阅读全文
posted @ 2021-04-12 23:56 kpwong 阅读(48) 评论(0) 推荐(0)
摘要:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: 阅读全文
posted @ 2021-04-12 23:48 kpwong 阅读(53) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? import java.util.Stack; class Solution { public List<Integer> 阅读全文
posted @ 2021-04-12 23:39 kpwong 阅读(51) 评论(0) 推荐(0)
摘要:根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 class Solution 阅读全文
posted @ 2021-04-12 23:32 kpwong 阅读(51) 评论(0) 推荐(0)
摘要:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 输入: cand 阅读全文
posted @ 2021-04-12 23:25 kpwong 阅读(60) 评论(0) 推荐(0)
摘要:堆排序 将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便得到一个有序序列。 public void sort(int[] arr) { int n = 阅读全文
posted @ 2021-04-12 23:12 kpwong 阅读(129) 评论(0) 推荐(0)
摘要:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以 阅读全文
posted @ 2021-04-12 23:06 kpwong 阅读(69) 评论(0) 推荐(0)
摘要:给定一个字符串,逐个翻转字符串中的每个单词。 说明: 无空格字符构成一个 单词 。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 示例 1: 输入:"the sky is blue" 输出:"blue is 阅读全文
posted @ 2021-04-12 23:00 kpwong 阅读(53) 评论(0) 推荐(0)
摘要:给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 示例 1: 输入: 12258 输出: 5 解释: 12258有5种 阅读全文
posted @ 2021-04-12 22:51 kpwong 阅读(68) 评论(0) 推荐(0)
摘要:给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。 示例 1: 输入:nums = [1,3,4,2,2] 输出:2 示例 2: 输入:nums = [3, 阅读全文
posted @ 2021-04-12 22:45 kpwong 阅读(94) 评论(0) 推荐(0)
摘要:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 输入:head = [4,2,1,3] 输出:[1,2,3,4] 输入:head = [-1,5,3,4,0] 输出:[-1,0,3 阅读全文
posted @ 2021-04-12 22:31 kpwong 阅读(80) 评论(0) 推荐(0)
摘要:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1: 输入: 阅读全文
posted @ 2021-04-12 22:18 kpwong 阅读(73) 评论(0) 推荐(0)
摘要:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ ["1","1","1","1","0"], [" 阅读全文
posted @ 2021-04-12 22:08 kpwong 阅读(65) 评论(0) 推荐(0)
摘要:给定一个 没有重复 数字的序列,返回其所有可能的全排列。 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] leetcode 第46题 解题思路 这也是一个递归问题。对于数组中的每个元素,它的全排列就等于 阅读全文
posted @ 2021-04-12 19:39 kpwong 阅读(79) 评论(0) 推荐(0)
摘要:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 示例 2: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2 阅读全文
posted @ 2021-04-12 19:37 kpwong 阅读(80) 评论(0) 推荐(0)
摘要:反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? public ListNode reverseList(ListNode head) { ListNode pre 阅读全文
posted @ 2021-04-12 17:19 kpwong 阅读(55) 评论(0) 推荐(0)
摘要:编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。 如果是有效的 IPv4 地址,返回 "IPv4" ;如果是有效的 IPv6 地址,返回 "IPv6" ;如果不是上述类型的 IP 地址,返回 "Neither" 。IPv4 地址由十进制数和点来表示,每个地址包含 4 个十进 阅读全文
posted @ 2021-04-12 17:11 kpwong 阅读(130) 评论(0) 推荐(0)
摘要:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出 阅读全文
posted @ 2021-04-12 17:00 kpwong 阅读(60) 评论(0) 推荐(0)
摘要:实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小 阅读全文
posted @ 2021-04-12 16:41 kpwong 阅读(53) 评论(0) 推荐(0)
摘要:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列 阅读全文
posted @ 2021-04-12 16:30 kpwong 阅读(58) 评论(0) 推荐(0)
摘要:路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 输入:root = [1,2,3 阅读全文
posted @ 2021-04-12 16:16 kpwong 阅读(110) 评论(0) 推荐(0)
摘要:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8 阅读全文
posted @ 2021-04-12 15:44 kpwong 阅读(78) 评论(0) 推荐(0)
摘要:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 你可以假设 阅读全文
posted @ 2021-04-12 15:28 kpwong 阅读(67) 评论(0) 推荐(0)
摘要:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:root = [3,5,1,6,2 阅读全文
posted @ 2021-04-12 14:57 kpwong 阅读(61) 评论(0) 推荐(0)
摘要:给一非空的单词列表,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。 示例 1: 输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2 输出: [“i”, “ 阅读全文
posted @ 2021-04-11 23:42 kpwong 阅读(120) 评论(0) 推荐(0)
摘要:组件端口及说明 CDH 7180: Cloudera Manager WebUI端口7182: Cloudera Manager Server 与 Agent 通讯端口 Hadoop 50070:HDFS WEB UI端口8020 : 高可用的HDFS RPC端口9000 : 非高可用的HDFS R 阅读全文
posted @ 2021-04-08 16:03 kpwong 阅读(383) 评论(0) 推荐(0)
摘要:验证hash算法网址: https://www.fileformat.info/tool/hash.htm? POM文件 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <vers 阅读全文
posted @ 2021-04-02 13:44 kpwong 阅读(322) 评论(0) 推荐(0)
摘要:省略:未更新 阅读全文
posted @ 2021-04-01 09:35 kpwong 阅读(32) 评论(0) 推荐(0)