力扣题解
文章平均质量分 56
Gnomeshgh9
Special
展开
-
力扣第274场周赛——5965题,相同元素的间隔之和
题目描述:题目点这里初级版本:使用哈希表存放每个元素所对应的下标,键是每个出现的元素,值是这个元素出现的下标,使用list数组进行存放。从前往后遍历,找到每个值对应出现的所有下标,根据这些下标求距离。java代码:public long[] getDistances(int[] arr) { Map<Integer, List<Integer>> m = new HashMap<>(); int length = arr.length;原创 2021-12-26 12:41:32 · 664 阅读 · 0 评论 -
力扣周赛2080-区间内查询数字的频率
力扣周赛思路:代码:题目请点击这里思路:首先我们分析暴力解法为什么不行,因为在重复调用query的时候,暴力查询的方式查到了非常多"垃圾数据",因为大部分的数据都是不满足条件的。所以暴力的解法效率不高。那么我们如何避免查询到大量的"垃圾数据"呢?那就是将之前查过的某个段中数据的分布记下来,比如我以1000个数据为一个页,那么我定义一个Map来保存这1000个元素中每个元素出现的频率。那么如果执行某次查询的时候,如果这个区间将这1000个数据给包含进去了的话,我就不需要再执行这1000个数据的原创 2021-11-22 11:00:12 · 257 阅读 · 0 评论 -
2021-08-04 力扣每日一题
611. 有效三角形的个数问题描述:给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例1:输入: [2,2,3,4]输出: 3解释:有效的组合是: 2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3思路:先进行排序暴力枚举前两个边,再二分查找第三个边,得出在确定的前两个边的情况下,第三个边可以选几个。累加后得出返回结果即可Java代码 /** * @Description: 力扣611题题解 *原创 2021-08-04 15:35:55 · 147 阅读 · 0 评论 -
2021-08-03力扣每日一题
最短无序连续子数组问题描述:给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。示例1:输入:nums = [2,6,4,8,10,9,15]输出:5解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。示例2:输入:nums = [1,2,3,4]输出:0示例3:输入:nums = [1]输出:0思路:因为最后需原创 2021-08-03 08:59:10 · 75 阅读 · 0 评论 -
2021-8-08-02 力扣每日一题
743 网络延迟时间题目描述:有 n 个网络节点,标记为 1 到 n。给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1 。示例1:输入:times = [[2,1,1],[2,3,1],[3,4,1]], n = 4, k = 2输出:2原创 2021-08-02 18:20:53 · 785 阅读 · 0 评论 -
252场周赛-力扣
5830 三除数问题描述:给你一个整数 n 。如果 n 恰好有三个正除数 ,返回 true ;否则,返回 false 。如果存在整数 k ,满足 n = k * m ,那么整数 m 就是 n 的一个 除数 。示例1:输入:n = 2输出:false解释:2 只有两个除数:1 和 2 。示例2:输入:n = 4输出:true解释:4 有三个除数:1、2 和 4 。思路:如果只有三个除数,则一定是一个完全平方数,当然这是一个必要但不充分条件如果这个平方数开放后的数是一个质数,那原创 2021-08-01 12:49:27 · 123 阅读 · 0 评论 -
2021-08-01力扣每日一题
1337 矩阵中战斗力最弱的 K 行问题描述给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。示例1:输入:mat = [[1,1,0,0,0], [1,1,1,1,0], [1,0,0,0原创 2021-08-01 09:07:57 · 113 阅读 · 0 评论 -
2021-07-31 力扣每日一题
987二叉树的垂序遍历问题描述给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。对位于 (row, col) 的每个结点而言,其左右子结点分别位于 (row + 1, col - 1) 和 (row + 1, col + 1) 。树的根结点位于 (0, 0) 。二叉树的 垂序遍历 从最左边的列开始直到最右边的列结束,按列索引每一列上的所有结点,形成一个按出现位置从上到下排序的有序列表。如果同行同列上有多个结点,则按结点的值从小到大进行排序。返回二叉树的 垂序遍历 序列。示原创 2021-07-31 12:13:44 · 93 阅读 · 0 评论 -
2021-6-8 力扣每日一题
1049 最后一块石头的重量问题描述: 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回原创 2021-06-08 15:45:52 · 2396 阅读 · 1 评论 -
2021-6-7 力扣每日一题
目标和问题描述:示例1:示例2:思路:Java代码:问题描述: 给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。 返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。示例1:输入:nums = [1,1,1,1,1], targ原创 2021-06-07 10:55:49 · 279 阅读 · 0 评论 -
2021-6-6 力扣每日一题
474 一和零目录474 一和零问题描述:示例1:示例2:思路:【动态规划】Java代码:问题描述: 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1 。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。示例1:输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3输出:4解释:最多有 5 个 0 和 3原创 2021-06-06 12:57:54 · 147 阅读 · 0 评论 -
2021-6-5 力扣每日一题
203 移除链表元素问题描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例2:输入:head = [], val = 1输出:[]示例3:输入:head = [7,7,7,7], val = 7输出:[]思路: 在处理链表问题时,我们通常给链表添加一个空的表头,这样在原创 2021-06-05 18:36:50 · 77 阅读 · 0 评论 -
2021-06-04力扣每日一题
160 相交链表问题描述:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。示例1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersected原创 2021-06-04 10:24:26 · 126 阅读 · 1 评论 -
2021-06-03 力扣每日一题
这里写自定义目录标题525 连续数组问题描述:示例1:示例2:思路:【前缀和+哈希表】Java代码525 连续数组问题描述:给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。思路:原创 2021-06-03 22:45:03 · 74 阅读 · 0 评论 -
2021-06-02 力扣每日一题
523 连续的子数组和问题描述:给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。示例1:输入:nums = [23,2,4,6,7], k = 6输出:true解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 。示原创 2021-06-02 11:25:33 · 147 阅读 · 0 评论 -
2021-6-1力扣每日一题
1744 你能在你最喜欢的那天吃到你最喜欢的糖果吗?你看这像是想给糖的样子吗???怕不是读懂题就得花点儿时间问题描述:给你一个下标从 0 开始的正整数数组 candiesCount ,其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。同时给你一个二维数组 queries ,其中 queries[i] = [favoriteTypei, favoriteDayi, dailyCapi] 。你按照如下规则进行一场游戏:你从第 0 天开始吃糖果。你在吃完 所有 第 i -原创 2021-06-01 16:59:14 · 145 阅读 · 0 评论 -
2021-5-31 力扣每日一题
342 4的幂问题描述: 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x示例1:输入:n = 16输出:true示例2:输入:n = 5输出:false示例3:输入:n = 1输出:true思路: 这个和昨天的思路一模一样,我们只需使用Java内置的计算对数的函数,计算出以4为底n的对数即可,利用换底公式,接着判断一下这个数是不是整数即可。Ja原创 2021-05-31 12:45:14 · 84 阅读 · 0 评论 -
2021-5-30 力扣每日一题
231 2的幂断更,断更,断更。我有罪,但是我不改hhh问题描述: 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。示例1:输入:n = 1输出:true示例2:输入:n = 16输出:true示例3:输入:n = 3输出:false示例4:输入:n = 4输出:true示例5:输入:n = 5输出:false思路:原创 2021-05-30 11:42:10 · 183 阅读 · 0 评论 -
2021-5-26 力扣每日一题
1190 反转每对括号间的子串问题描述:给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中不应包含任何括号。示例1:输入:s = "(abcd)"输出:"dcba"示例2:输入:s = "(u(love)i)"输出:"iloveu"示例3:输入:s = "(ed(et(oc))el)"输出:"leetcode"示例4:输入:s = "a(bcdefghijkl(mno)p)q"输原创 2021-05-26 10:43:59 · 151 阅读 · 0 评论 -
2021-5-24 力扣每日一题
664 奇怪的打印机最近挺烦的其实,所以又断了几天,感觉学不进去东西,状态还需要调整调整。争取以后不断更!!(不是)有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印由 同一个字符 组成的序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。示例1:输入:s = "aaabbb"输出:2解释:首先打印 "aaa" 然后打印 "bbb"。示例2:输入:s = "aba"输出:2解原创 2021-05-24 10:45:54 · 226 阅读 · 2 评论 -
2021-5-18 力扣每日一题
1442 形成两个异或相等数组的三元组数目问题描述: 给你一个整数数组 arr 。现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。 a 和 b 定义如下: a = arr[i] ^ arr[i + 1] ^ … ^ arr[j - 1] b = arr[j] ^ arr[j + 1] ^ … ^ arr[k] 注意:^ 表示 按位异或 操作。请返回能够令 a == b 成立的三元组 (i, j ,原创 2021-05-18 14:15:29 · 136 阅读 · 0 评论 -
202-5-17 力扣每日一题
993 二叉树的堂兄弟节点最近考完数字逻辑有点飘了,玩的时间有点多,又要开始忙着项目的事,所以又鸽了几天,罪过罪过~~以后尽量不鸽(不是)。问题描述 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。示例1:原创 2021-05-17 10:49:39 · 81 阅读 · 1 评论 -
2021-05-12力扣每日一题
1310 子数组异或查询问题描述: 有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。并返回一个包含给定查询 queries 所有结果的数组。示例1:输入:arr = [1,3,4,8], queries = [[0,1],[1,2],[0,3],[3,3]]输出:原创 2021-05-12 09:46:20 · 153 阅读 · 0 评论 -
2021-05-11 力扣每日一题
1734解码异或后的排列问题描述: 给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 。它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XOR perm[i + 1] 。比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 。给你 encoded 数组,请你返回原始数组 perm 。题目保证答案存在且唯一。示例1:输入:encoded = [3,1]输出:[1,2,3]解原创 2021-05-11 15:57:19 · 152 阅读 · 1 评论 -
2021-05-10 力扣每日一题
872 叶子相似的树问题描述: 请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。示例1:输入:root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,原创 2021-05-10 09:54:39 · 90 阅读 · 0 评论 -
2021-5-09 力扣每日一题
1482制作m束花所需的最少天数问题描述 给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。示例1:输入:bloomDay = [1,10,3,10,2], m = 3, k = 1输出:3解释:让我们一起观察这三天的花开过程,原创 2021-05-09 13:43:31 · 220 阅读 · 0 评论 -
2021-5-08 力扣每日一题
1723完成所有工作的最短时间虽迟但到,带你一文读懂状态压缩在动态规划中的应用题目表述: 给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间。 请你将这些工作分配给 k 位工人。所有工作都应该分配给工人,且每项工作只能分配给一位工人。工人的 工作时间 是完成分配给他们的所有工作花费时间的总和。请你设计一套最佳的工作分配方案,使工人的 最大工作时间 得以 最小化 。 返回分配方案中尽可能 最小 的 最大工作时间 。示例1:输入:jobs = [3,2,原创 2021-05-08 21:37:01 · 1293 阅读 · 4 评论 -
2021-5-7 力扣每日一题
1486 数组异或操作问题描述: 给你两个整数,n 和 start 。 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。 请返回 nums 中所有元素按位异或(XOR)后得到的结果。示例1:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。 "^" 为按位异或 XOR 运算符。示例2:原创 2021-05-07 10:20:38 · 95 阅读 · 0 评论 -
2021-5-6 力扣每日一题
1720 解码异或后的数组这几天在建模,不好意思鸽了几天的题解。以后尽量不会鸽的。问题描述: 未知 整数数组 arr 由 n 个非负整数组成。 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。 给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。 请解码返回原创 2021-05-06 10:28:38 · 110 阅读 · 0 评论 -
2021-4-30 力扣每日一题
137 只出现一次的数字II问题描述: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现三次请你找出并返回那个只出现了一次的元素。示例1:输入:nums = [2,2,3,2]输出:3示例2:输入:nums = [0,1,0,1,0,1,99]输出:99思路:方法一【哈希表】 我们遍历每一个元素,统计每个元素出现的个数,接着遍历我们的哈希表,将值为1的元素返回即可Java代码/** * @Description: 力扣137题题解* @re原创 2021-04-30 10:36:28 · 77 阅读 · 0 评论 -
2021-4-29 力扣每日一题
403 青蛙过河问题描述: 一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。 开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。 如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k原创 2021-04-29 21:53:08 · 208 阅读 · 0 评论 -
2021-4-28 力扣每日一题
633 平方数之和问题描述:给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。示例1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例2:输入:c = 3输出:false示例3:输入:c = 4输出:true示例4:输入:c = 2输出:true示例5:输入:c = 1输出:true思路:方法一【暴力】 经典,最容易想到的方案就是暴力了,但是暴力还要解决一些问题,比如我们遍历的起点和终原创 2021-04-28 10:53:36 · 351 阅读 · 0 评论 -
2021-4-27 力扣每日一题
938 二叉搜索树的范围和问题描述: 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23思路: 今天的题没啥好写的,一个遍历即可。深搜,广搜都可,这里使用深搜。Java代码:/原创 2021-04-27 13:06:56 · 83 阅读 · 2 评论 -
2021-4-26 力扣每日一题
1011在D天内送达包裹的能力问题描述: 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。 返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第原创 2021-04-26 19:16:03 · 296 阅读 · 0 评论