3005-最大频率元素计数
3005-最大频率元素计数最大频率元素计数 题目描述 给你一个由 正整数 组成的数组 nums 。 返回数组 nums 中所有具有 最大 频率的元素的 总频率 。 元素的 频率 是指该元素在数组中出现的次数。 示例 1: 输入:nums = [1,2,2,3,1,4]输出:4解释:元素 1 和 2 的频率为 2 ,是数组中的最大频率。因此具有最大频率的元素在数组中的数量是 4 。 示例 2: 输入:nums = [1,2,3,4,5]输出:5解释:数组中的所有元素的频率都为 1 ,是最大频率。因此具有最大频率的元素在数组中的数量是 5 。 提示: 1 <= nums.length <= 100 1 <= nums[i] <= 100 解题思路 太简单了 1234567891011121314151617181920212223import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class LeetCode3...
3408-设计任务管理器
3408-设计任务管理器题目描述 一个任务管理器系统可以让用户管理他们的任务,每个任务有一个优先级。这个系统需要高效地处理添加、修改、执行和删除任务的操作。 请你设计一个 TaskManager 类: TaskManager(vector<vector<int>>& tasks) 初始化任务管理器,初始化的数组格式为 [userId, taskId, priority] ,表示给 userId 添加一个优先级为 priority 的任务 taskId 。 void add(int userId, int taskId, int priority) 表示给用户 userId 添加一个优先级为 priority 的任务 taskId ,输入 保证 taskId 不在系统中。 void edit(int taskId, int newPriority) 更新已经存在的任务 taskId 的优先级为 newPriority 。输入 保证 taskId 存在于系统中。 void rmv(int taskId) 从系统中删除任务 taskId 。输入 保证 ...
2349-设计数字容器系统
2349-设计数字容器系统题目描述 设计一个数字容器系统,可以实现以下功能: 在系统中给定下标处 插入 或者 替换 一个数字。 返回 系统中给定数字的最小下标。 请你实现一个 NumberContainers 类: NumberContainers() 初始化数字容器系统。 void change(int index, int number) 在下标 index 处填入 number 。如果该下标 index 处已经有数字了,那么用 number 替换该数字。 int find(int number) 返回给定数字 number 在系统中的最小下标。如果系统中没有 number ,那么返回 -1 。 示例: 输入:["NumberContainers", "find", "change", "change", "change", "change", "find", "change", "find&quo...
2197-替换数组中的非互质数
2197-替换数组中的非互质数题目描述 给你一个整数数组 nums 。请你对数组执行下述操作: 从 nums 中找出 任意 两个 相邻 的 非互质 数。 如果不存在这样的数,终止 这一过程。 否则,删除这两个数,并 替换 为它们的 最小公倍数(Least Common Multiple,LCM)。 只要还能找出两个相邻的非互质数就继续 重复 这一过程。 返回修改后得到的 最终 数组。可以证明的是,以 任意 顺序替换相邻的非互质数都可以得到相同的结果。 生成的测试用例可以保证最终数组中的值 小于或者等于 108 。 两个数字 x 和 y 满足 非互质数 的条件是:GCD(x, y) > 1 ,其中 GCD(x, y) 是 x 和 y 的 最大公约数 。 示例 1 : 输入:nums = [6,4,3,2,7,6,2]输出:[12,7,6]解释: (6, 4) 是一组非互质数,且 LCM(6, 4) = 12 。得到 nums = [12,3,2,7,6,2] 。 (12, 3) 是一组非互质数,且 LCM(12, 3) = 12 。得到 nums = [12,2,7...
1935-可以输入的最大单词数
1935-可以输入的最大单词数题目描述 键盘出现了一些故障,有些字母键无法正常工作。而键盘上所有其他键都能够正常工作。 给你一个由若干单词组成的字符串 text ,单词间由单个空格组成(不含前导和尾随空格);另有一个字符串 brokenLetters ,由所有已损坏的不同字母键组成,返回你可以使用此键盘完全输入的 text 中单词的数目。 示例 1: 输入:text = "hello world", brokenLetters = "ad"输出:1解释:无法输入 "world" ,因为字母键 'd' 已损坏。 示例 2: 输入:text = "leet code", brokenLetters = "lt"输出:1解释:无法输入 "leet" ,因为字母键 'l' 和 't' 已损坏。 示例 3: 输入:text = "leet code", brokenLetters = "...
2327-知道秘密的人数
2327-知道秘密的人数题目描述 在第 1 天,有一个人发现了一个秘密。 给你一个整数 delay ,表示每个人会在发现秘密后的 delay 天之后,每天 给一个新的人 分享 秘密。同时给你一个整数 forget ,表示每个人在发现秘密 forget 天之后会 忘记 这个秘密。一个人 不能 在忘记秘密那一天及之后的日子里分享秘密。 给你一个整数 n ,请你返回在第 n 天结束时,知道秘密的人数。由于答案可能会很大,请你将结果对 109 + 7 取余 后返回。 示例 1: 输入:n = 6, delay = 2, forget = 4输出:5解释:第 1 天:假设第一个人叫 A 。(一个人知道秘密)第 2 天:A 是唯一一个知道秘密的人。(一个人知道秘密)第 3 天:A 把秘密分享给 B 。(两个人知道秘密)第 4 天:A 把秘密分享给一个新的人 C 。(三个人知道秘密)第 5 天:A 忘记了秘密,B 把秘密分享给一个新的人 D 。(三个人知道秘密)第 6 天:B 把秘密分享给 E,C 把秘密分享给 F 。(五个人知道秘密) 示例 2: 输入:n = 4, delay = 1...
1317-将整数转换为两个无零整数的和
1317-将整数转换为两个无零整数的和题目描述 「无零整数」是十进制表示中 不含任何 0 的正整数。 给你一个整数 n,请你返回一个 由两个整数组成的列表 [a, b],满足: a 和 b 都是无零整数 a + b = n 题目数据保证至少有一个有效的解决方案。 如果存在多个有效解决方案,你可以返回其中任意一个。 示例 1: 输入:n = 2输出:[1,1]解释:a = 1, b = 1。a + b = n 并且 a 和 b 的十进制表示形式都不包含任何 0。 示例 2: 输入:n = 11输出:[2,9] 示例 3: 输入:n = 10000输出:[1,9999] 示例 4: 输入:n = 69输出:[1,68] 示例 5: 输入:n = 1010输出:[11,999] 提示: 2 <= n <= 104 题解 由于题目中给出的 n 的范围 [2,10000] 较小,因此我们可以直接在 [1,n) 的范围内枚举 A,并通过 n−A 得到 B,再判断 A 和 B 是否均不包含 0 即可。 123456789101112131415161...
3516-找到最近的人
3516-找到最近的人题目描述 给你三个整数 x、y 和 z,表示数轴上三个人的位置: x 是第 1 个人的位置。 y 是第 2 个人的位置。 z 是第 3 个人的位置,第 3 个人 不会移动 。 第 1 个人和第 2 个人以 相同 的速度向第 3 个人移动。 判断谁会 先 到达第 3 个人的位置: 如果第 1 个人先到达,返回 1 。 如果第 2 个人先到达,返回 2 。 如果两个人同时到达,返回 0 。 根据上述规则返回结果。 示例 1: 输入: x = 2, y = 7, z = 4 输出: 1 解释: 第 1 个人在位置 2,到达第 3 个人(位置 4)需要 2 步。 第 2 个人在位置 7,到达第 3 个人需要 3 步。 由于第 1 个人先到达,所以输出为 1。 示例 2: 输入: x = 2, y = 5, z = 6 输出: 2 解释: 第 1 个人在位置 2,到达第 3 个人(位置 6)需要 4 步。 第 2 个人在位置 5,到达第 3 个人需要 1 步。 由于第 2 个人先到达,...
3025-人员站位的方案数
3025-人员站位的方案数题目描述 给你一个 n x 2 的二维数组 points ,它表示二维平面上的一些点坐标,其中 points[i] = [xi, yi] 。 计算点对 (A, B) 的数量,其中 A 在 B 的左上角,并且 它们形成的长方形中(或直线上)没有其它点(包括边界)。 返回数量。 示例 1: 输入:points = [[1,1],[2,2],[3,3]] 输出:0 解释: 没有办法选择 A 和 B,使得 A 在 B 的左上角。 示例 2: 输入:points = [[6,2],[4,4],[2,6]] 输出:2 解释: 左边的是点对 (points[1], points[0]),其中 points[1] 在 points[0] 的左上角,并且形成的长方形内部是空的。 中间的是点对 (points[2], points[1]),和左边的一样是合法的点对。 右边的是点对 (points[2], points[0]),其中 points[2] 在 points[0] 的左上角,但 points[1] 在长方形内部,所以不是一个合法的点对。 示例...
1792-最大平均通过率
1792-最大平均通过率题目描述 一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试。给你一个二维数组 classes ,其中 classes[i] = [passi, totali] ,表示你提前知道了第 i 个班级总共有 totali 个学生,其中只有 passi 个学生可以通过考试。 给你一个整数 extraStudents ,表示额外有 extraStudents 个聪明的学生,他们 一定 能通过任何班级的期末考。你需要给这 extraStudents 个学生每人都安排一个班级,使得 所有 班级的 平均 通过率 最大 。 一个班级的 通过率 等于这个班级通过考试的学生人数除以这个班级的总人数。平均通过率 是所有班级的通过率之和除以班级数目。 请你返回在安排这 extraStudents 个学生去对应班级后的 最大 平均通过率。与标准答案误差范围在 10-5 以内的结果都会视为正确结果。 示例 1: 输入:classes = [[1,2],[3,5],[2,2]], extraStudents = 2输出:0.78333解释:你可以将额外的两个学生...
面试经典-单词拆分
单词拆分一、题目139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。 示例 2: 输入: s = "applepenapple", wordDict = ["apple", "pen"]输出: true解释: 返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。注意...
面试经典-二进制求和
二进制求和一、题目67. 二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1: 输入: a = "11", b = "1"输出:"100" 示例 2: 输入:a = "1010", b = "1011"输出:"10101" 提示: 1 <= a.length, b.length <= 104 a 和 b 仅由字符 '0' 或 '1' 组成 字符串如果不是 "0" ,就不含前导零 二、题解12345678910111213141516class Solution { public String addBinary(String a, String b) { StringBuilder ans = new StringBuilder(); int n = Math.max(a.length...
面试经典-打家劫舍
打家劫舍打家劫舍 不会写✍✍😭😭😭😭 todo
面试经典-爬楼梯
爬楼梯一、题目70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2输出:2解释:有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入:n = 3输出:3解释:有三种方法可以爬到楼顶。 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 提示: 1 <= n <= 45 二、题解题解一(枚举法,跟着题解写答案😶🌫️🤐😪😴😥🤩)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152class Solution { public int climbStairs(int n) { return switch (n) { case 1 -> 1; ...
面试经典-Pow(x,n)
Pow(x,n)一、题目50. Pow(x, n) 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x = 2.00000, n = 10输出:1024.00000 示例 2: 输入:x = 2.10000, n = 3输出:9.26100 示例 3: 输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25 提示: -100.0 < x < 100.0 -231 <= n <= 231-1 n 是一个整数 要么 x 不为零,要么 n > 0 。 -104 <= xn <= 104 二、题解题解一(照着用例写代码🤣🤣)1234567891011121314151617181920212223242526public static double myPow(double x, int n) { if (x == 0) { return 0; } if...
面试经典-全排列
全排列一、题目46. 全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入:nums = [0,1]输出:[[0,1],[1,0]] 示例 3: 输入:nums = [1]输出:[[1]] 提示: 1 <= nums.length <= 6 -10 <= nums[i] <= 10 nums 中的所有整数 互不相同 二、题解
面试经典-完全二叉树的节点个数
完全二叉树的节点个数一、题目222. 完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例 1: 输入:root = [1,2,3,4,5,6]输出:6 示例 2: 输入:root = []输出:0 示例 3: 输入:root = [1]输出:1 提示: 树中节点的数目范围是[0, 5 * 104] 0 <= Node.val <= 5 * 104 题目数据保证输入的树是 完全二叉树 进阶:遍历树来统计节点是一种时间复杂度为 O(n) 的简单解决方案。你可以设计一个更快的算法吗? 题解题解一(递归)123456789101112131415161718192021222324252627282930313233/** * Definition for a binary tree node. * public ...
面试经典-x的平方根
x的平方根一、题目69. x 的平方根 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1: 输入:x = 4输出:2 示例 2: 输入:x = 8输出:2解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。 提示: 0 <= x <= 231 - 1 二、题解题解一(直接使用库函数)123public static int mySqrt(int x) { return (int)Math.sqrt(x);} ! 题解二(二分法)1234567891011121314151617public static int mySqrt(int x) { if (x < 2) { return x; // 处理特殊情况 0 和 1 } int lef...
面试经典-阶乘后的零
阶乘后的零一、题目172. 阶乘后的零 给定一个整数 n ,返回 n! 结果中尾随零的数量。 提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1 示例 1: 输入:n = 3输出:0解释:3! = 6 ,不含尾随 0 示例 2: 输入:n = 5输出:1解释:5! = 120 ,有一个尾随 0 示例 3: 输入:n = 0输出:0 提示: 0 <= n <= 104 进阶:你可以设计并实现对数时间复杂度的算法来解决此问题吗? 二、题解题解一(BigInteger方式)好像Leetcode无法识别BigInteger,所以提交失败 1234567891011121314151617public static int trailingZeroes(int n) { BigInteger result = BigInteger.ONE; for (int i = 1; i <= n; i++) { BigInteger bigInteger = BigIn...
面试经典-加一
加一一、题目66. 加一 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。 示例 2: 输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。 示例 3: 输入:digits = [9]输出:[1,0]解释:输入数组表示数字 9。加 1 得到了 9 + 1 = 10。因此,结果应该是 [1,0]。 提示: 1 <= digits.length <= 100 0 <= digits[i] <= 9 二、题解注意9+1=10 就可以了 1234567891011121314151617181920212223class Solution { public static int[] plusOne(int[] digits) {...
