员工的重要性
力扣 690. 员工的重要性题目说明
给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id 。
比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数据结构是 [1, 15, [2]] ,员工 2的 数据结构是 [2, 10, [3]] ,员工 3 的数据结构是 [3, 5, []] 。注意虽然员工 3 也是员工 1 的一个下属,但是由于 并不是直系 下属,因此没有体现在员工 1 的数据结构中。
现在输入一个公司的所有员工信息,以及单个员工 id ,返回这个员工和他所有下属的重要度之和。
提示:
一个员工最多有一个 直系 领导,但是可以有多个 直系 下属
员工数量不超过 2000 。
示例例11234输入:[[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1输出:11解释:员工 1 自身的重要度是 5 ,他有两个直系下属 2 和 3 ,而且 2 和 3 的重要度均为 3 。因此员工 1 的总重要度是 5 + 3 + 3 = 11 ...
平方数之和
力扣 633. 平方数之和题目说明
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。
提示:
0 <= c <= 231 - 1
示例例1123输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5
例212输入:c = 3输出:false
例312输入:c = 4输出:true
笔者理解此题是一道数学算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,发现此题运用双指针的解法就很巧妙,直接根据边界条件向中间试探就好了,让我们来看看具体如何实现的吧。
实现12345678910111213141516171819202122232425public boolean judgeSquareSum(int c) { // 采用双指针的思路 // c = a^2 + b^2中 a,b差距最大的情况 就是c刚好能够开平方,a,b中有一个等于0 int i = 0; int j = (int) Math.sqrt(c); ...
在IDEA创建maven的web项目(Version 2020.2.4)
在IDEA创建maven的web项目(Version 2020.2.4) 适合小白食用1、首先新建一个项目
2、选择maven,点击create from archetype,点击以archetype-webapp结尾的条目,然后点击next
3、自定义项目名、groupid和artfactid
4、选择自己安装maven所在路径
5、在加载中,耐心等待一会
6、第一次的时候会下载文件,需要好一会
7、run运行界面的提示success就表示成功了
8、打开你项目的配置
9、为项目添加web模块,一般里面就有的,有的话就不用添加了
10、在modules界面配置好web的相关配置,没配置好会导致web项目无法运行
11、在artifacts配置产品,也就是最终的产出
12、为项目添加tomcat
13、记得选择Local tomcat(记得看清楚!!!)
14、自定义个名字以及选择tomcat所在的目录
15、配置tomcat的产品,也就是网页的产出
16、最后点击运行试试吧,祝你成功!
旋转数组
力扣 189. 旋转数组题目说明
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
进阶:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?
提示:
1 <= nums.length <= 2 * 10^4
-2^31 <= nums[i] <= 2^31 - 1
0 <= k <= 10^5
示例例1123456输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]
例212345输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释: 向右旋转 1 步: [99,-1,-100,3]向右旋转 2 步: [3,99,-1,-100]
笔者理解此题是一道数组算法问题,在力扣题库 ...
二叉搜索树的范围和
力扣 938. 二叉搜索树的范围和题目说明
给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。
提示:
树中节点数目在范围 [1, 2 * 104] 内
1 <= Node.val <= 105
1 <= low <= high <= 105
所有 Node.val 互不相同
示例例1
12输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32
例2
12输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23
笔者理解此题是一道二叉搜索树问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题直接对二叉搜索树进行中序遍历求解即可,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515 ...
在D天内送达包裹的能力
力扣 1011. 在 D 天内送达包裹的能力题目说明
传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。
传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。
返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。
提示:
1 <= D <= weights.length <= 5 * 104
1 <= weights[i] <= 500
示例例11234567891011输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第 1 天:1, 2, 3, 4, 5第 2 天:6, 7第 3 天:8第 4 天:9第 5 天:10请注意,货物必须按照给定的顺序装运,因此使用载重能力为 14 的船舶并将包装分成 (2, 3, 4, 5), (1, 6, 7), (8), (9), (10) 是不允许的。
例21234567输入:w ...
递增顺序搜索树
力扣 897. 递增顺序搜索树题目说明
给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。
提示:
树中节点数的取值范围是 [1, 100]
0 <= Node.val <= 1000
示例例1
12输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
例2
12输入:root = [5,1,7]输出:[1,null,5,null,7]
笔者理解此题是一道二叉搜索树问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题直接对二叉搜索树进行中序遍历求解即可,让我们来看看具体如何实现的吧。
实现12345678910111213141516171819202122232425262728293031323334353637/** * Definition for a binary ...
最大整除子集
力扣 368. 最大整除子集题目说明
给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足:
answer[i] % answer[j] == 0 ,或
answer[j] % answer[i] == 0
如果存在多个有效解子集,返回其中任何一个均可。
提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 2 * 109
nums 中的所有整数 互不相同
示例例1123输入:nums = [1,2,3]输出:[1,2]解释:[1,3] 也会被视为正确答案。
例212输入:nums = [1,2,4,8]输出:[1,2,4,8]
笔者理解此题是一道动态规划算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,发现此题只需要动态规划向后依次转移出 各个数之前的 能被其整除的数 的总和即可,用标记来标记标记最大的最大整除子集的长度和最后一个数即可,让我们来看看具体如何 ...
矩形区域不超过K的最大数值和
力扣 363. 矩形区域不超过 K 的最大数值和题目说明
给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。
题目数据保证总会存在一个数值和不超过 k 的矩形区域。
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 100
-100 <= matrix[i][j] <= 100
-105 <= k <= 105
示例例1
123输入:matrix = [[1,0,1],[0,-2,3]], k = 2输出:2解释:蓝色边框圈出来的矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。
例212输入:matrix = [[2,2,-1]], k = 3输出:3
笔者理解此题是一道数组算法问题,在力扣题库中被定义为困难题。
解法当笔者阅读完此题后,采用了动态规划加暴力的解法,动态规划是基于二维区域和检索 - 矩阵不可变的解法基础上的,让我们来看看具体 ...
解码方法
力扣 91. 解码方法题目说明
一条包含字母 A-Z 的消息通过以下映射进行了 编码 :
1234'A' -> 1 'B' -> 2... 'Z' -> 26
要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为:
"AAJF" ,将消息分组为 (1 1 10 6)
"KJF" ,将消息分组为 (11 10 6)
注意,消息不能分组为 (1 11 06) ,因为 "06" 不能映射为 "F" ,这是由于 "6" 和 "06" 在映射中并不等价。
给你一个只含数字的 非空 字符串 s ,请计算并返回 解码 方法的 总数 。
题目数据保证答案肯定是一个 32 位 的整数。
提示:
1 <= s.length <= 100
s 只包含数字,并且可能包含前导零。
示例例1123 ...









