leetcode刷题
文章平均质量分 78
leetcode刷题
迷茫的启明星
动态记录生活,文章记录学习。
展开
-
位运算修行手册
明明自觉学会了不少知识,可真正开始做题时,却还是出现了“一支笔,一双手,一道力扣(Leetcode)做一宿”的窘境?你是否也有过这样的经历,题型不算很难,看题解也能弄明白,可一到自己做就变成了与题面面相觑无从下手。这就是基础知识掌握不扎实、不牢固导致的,我们以位运算为例,我将把位运算基础给你清楚讲述,再以例题带你实战体验。原创 2023-07-24 07:00:00 · 390 阅读 · 38 评论 -
【二分查找】1201. 丑数 III
在本问题中,我们需要计算被 a、b、c 整除的正整数数量,以及被 ab、ac、bc 整除的正整数数量。然后,从总个数中减去被 ab、ac、bc 整除的正整数数量,最后再加上被 abc 整除的正整数数量。本文将介绍一种基于二分查找的搜索范围查找算法,该算法能够快速找到目标值在数组中的起始和结束位置。丑数是指可以被a、b或c整除的正整数。首先,我们需要计算a、b、c的最小公倍数abc,以及ab、ac、bc的最小公倍数。在每次迭代中,计算中间值mid,并使用容斥原理计算[1, mid]中的丑数个数。原创 2023-07-20 21:21:12 · 120 阅读 · 4 评论 -
【二分查找】2080. 区间内查询数字的频率
然后,使用二分查找在给定子数组范围内定位给定值的起始和结束下标,并计算给定值出现的频率。本文将介绍一种基于二分查找的搜索范围查找算法,该算法能够快速找到目标值在数组中的起始和结束位置。是一个算法函数,用于在已排序的区间中查找第一个大于或等于给定值的元素。遍历数组arr,将每个元素的值作为键,对应的下标数组作为值存储到哈希表中。在本题中,哈希表的键为数值,值为该数值在数组中出现的下标数组。子数组中一个值的频率指的是这个子数组中这个值的出现次数。最后,我们输出找到的元素。指的是这个子数组中这个值的出现次数。原创 2023-07-20 20:45:17 · 158 阅读 · 1 评论 -
【二分查找】34. 在排序数组中查找元素的第一个和最后一个位置
二分查找是一种高效的查找算法,其时间复杂度为 O(log n)。在许多情况下,我们需要在一个有序数组中找到某个目标值的搜索范围。本文将介绍一种基于二分查找的搜索范围查找算法,该算法能够快速找到目标值在数组中的起始和结束位置。基于二分查找的搜索范围查找算法具有高效性,时间复杂度为 O(log n)。在实际应用中,它可以帮助我们快速找到目标值在数组中的搜索范围,为后续操作提供便利。该算法的核心思想是在二分查找的基础上进行修改,以实现搜索范围的查找。,分别用于查找目标值在数组中的左边界和右边界。原创 2023-07-20 20:05:35 · 236 阅读 · 0 评论 -
【二分查找】668. 乘法表中第k小的数
本文介绍了一种基于二分查找的算法,用于在给定的乘法表中搜索第K小的数。我们首先计算乘法表的最小值和最大值,然后使用二分查找算法在乘法表中查找第K小的数。使用C++实现的查找乘法表中第K小数的算法代码简洁易懂,易于理解和修改。在给定乘法表的情况下,该算法可以快速找到第K小的数,具有较高的实用性和效率。总结一下,这个代码的主要思路是通过二分查找法在有序的乘法表中查找第k小的数。这个函数通过遍历乘法表的每一行,计算在当前行中,有多少个值小于等于。值可能不在乘法表中。表示需要查找的目标值在乘法表中的排名。原创 2023-07-19 22:20:49 · 152 阅读 · 1 评论 -
【二分查找】275. H 指数 II
由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的。解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 0, 1, 3, 5, 6 次。二分查找的复杂度为 O(log n),因此整个算法的复杂度也是 O(log n)。篇论文被引用的次数。左侧可能有更多的论文满足 h 指数的定义,因此将。篇论文分别被引用了至少。原创 2023-07-19 20:38:50 · 988 阅读 · 0 评论 -
【二分查找】1539. 第 k 个缺失的正整数
这道题目使用二分查找算法在 O(log n) 的时间复杂度内解决了问题。二分查找算法的关键在于每次将搜索区间减半,从而在有限的时间内找到目标值。在本题中,我们利用二分查找算法在严格升序排列的正整数数组中寻找第。二分查找算法的核心思想是每次将搜索区间减半,从而在有限的时间内找到目标值。解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...]。第 5 个缺失的正整数为 9。输入:arr = [2,3,4,7,11], k = 5。个缺失的正整数在数组中的位置。初始化搜索区间的左右边界。原创 2023-07-19 19:42:57 · 1020 阅读 · 0 评论 -
【二分查找】LCP 18. 早餐组合
这道题目考察了排序和二分查找法在求解组合问题中的应用。通过将主食和饮料的价格排序,我们可以在 O(nlogn) 的时间复杂度内完成购买方案的查找。而二分查找法在这里起到了关键作用,使得我们可以在 O(logn) 的时间复杂度内找到合适的饮料价格。首先,我们需要对主食和饮料的价格进行排序。这样,我们可以在遍历主食价格的同时,使用二分查找法在有序的饮料价格中找到合适的饮料价格,使得主食和饮料的总价格不超过。当遍历完所有的主食价格后,我们将得到的购买方案数量。,说明饮料价格还有可能在左侧区间,所以我们将。原创 2023-07-19 15:11:51 · 707 阅读 · 0 评论 -
【前缀和】1829. 每个查询的最大异或值
通过前缀和与位运算的方法,我们可以高效地解决这道题目。我们首先计算前缀异或和,然后倒序遍历数组,计算每个查询的答案。通过使用位运算,我们可以简化问题并提高算法的效率。在计算异或和的情况下,我们使用0作为初始值,因为异或操作的性质允许我们将所有元素与0进行异或,从而得到序列中所有元素的异或和。是C++标准库中的一个算法,用于对序列执行某些操作,并将结果累积到初始值。我们可以通过前缀和与位运算的方法来解决这个问题。的最大子集,使得这些元素的异或和的结果在。的整数变量,用于存储计算得到的异或和。原创 2023-07-18 19:56:04 · 137 阅读 · 4 评论 -
【前缀和】238. 除自身以外数组的乘积/剑指 Offer 66. 构建乘积数组
来记录当前元素左侧和右侧所有元素的乘积,避免了使用除法。在实际编程过程中,要注意数组边界的处理,确保不出现数组越界等错误。这是一个求解给定数组中除自身元素之外其他元素乘积的问题。题目要求在 O(n) 时间复杂度内完成此题,且不能使用除法。,分别表示当前元素左侧所有元素的乘积和右侧所有元素的乘积。这道题主要考察了数组操作的技巧。之中任意元素的全部前缀元素和后缀的乘积都在。同时,将其右侧所有元素的乘积。之外其余各元素的乘积。,将其左侧所有元素的乘积。,要求返回一个新的数组。之外其余各元素的乘积。原创 2023-07-18 16:43:50 · 221 阅读 · 0 评论 -
【前缀和】303. 区域和检索 - 数组不可变
前缀和数组是一种数据结构,用于在 O(1) 时间复杂度内求解给定区间内的元素之和。前缀和数组的基本思想是将原数组中的元素之和存储在一个新的数组中,使得可以通过简单的数组访问操作来获取区间和。通过使用前缀和数组,我们可以在 O(1) 时间复杂度内求解给定区间内的元素和。在实际应用中,前缀和数组还可以扩展到多维数组,用于求解更高维度的区间问题。然后,我们遍历原数组,将每个元素累加到前缀和数组中。,用于计算给定区间内的元素和。作为参数,用于计算给定区间内的元素和。作为参数,用于初始化前缀和数组。原创 2023-07-18 16:27:01 · 117 阅读 · 0 评论 -
【前缀和】1413. 逐步求和得到正数的最小值
在计算前缀和的过程中,我们需要找出最小的 startValue。由于累加和需要始终大于等于 1,我们可以在遍历数组时,检查当前前缀和是否大于等于 1。在增加 startValue 时,我们可以将 sum 减去一个固定的值,使得累加和重新大于等于 1。这个固定的值可以取当前位置的前缀和与 1 的差值。在确保累加和始终大于等于 1 的前提下,选出一个最小的正数作为 startValue。在这个问题中,我们可以计算 nums 数组中每个位置之前的累加和,然后找出最小的 startValue。原创 2023-07-18 16:06:28 · 131 阅读 · 0 评论 -
【前缀和】1588. 所有奇数长度子数组的和
动态规划:动态规划是一种通过组合子问题的解来解决原问题的方法。在本题中,我们可以将子数组的和问题分解为更小的子问题,然后组合子问题的解得到原问题的解。通过使用前缀和算法,我们可以高效地求解给定数组中所有奇数长度子数组的和。前缀和:前缀和是一种预处理方法,用于快速计算数组中任意一段子区间的和。,要求计算所有可能的奇数长度子数组的和。子数组定义为原数组中的一个连续子序列。【前缀和】1588. 所有奇数长度子数组的和。,计算其所有奇数长度子数组的和。中所有奇数长度子数组的和。快速得到子数组的和。原创 2023-07-18 11:50:35 · 261 阅读 · 1 评论 -
【前缀和】974. 和可被 K 整除的子数组
本题主要考察了子数组问题以及同余定理的应用。通过计算前 i 个元素的和模 k 的结果,可以快速判断出是否存在满足条件的子数组。同时,使用一个数组 h 记录模 k 的结果出现的次数,可以优化时间复杂度,提高解题效率。原创 2023-07-17 18:58:29 · 198 阅读 · 1 评论 -
【前缀和】1310.子数组异或查询
本篇将学习前缀和OJ题子数组异或查询相关知识。原创 2023-07-17 18:22:52 · 184 阅读 · 1 评论 -
【前缀和】1456.定长子串中元音的最大数目
这个官方题解采用了滑动窗口的方法来解决问题。通过维护一个固定大小的窗口,我们可以在O(n)的时间复杂度内找到最长连续元音字符的子串。在实际编程中,可以根据具体需求对这个解法进行优化,例如在字符串中只包含元音字符的情况下,可以进一步优化时间复杂度。原创 2023-07-17 18:00:43 · 284 阅读 · 1 评论 -
005.leetcode43. 字符串相乘(003)
给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。原创 2023-05-02 17:01:29 · 84 阅读 · 1 评论 -
004. leetcode415. 字符串相加(002)
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。原创 2023-05-02 16:16:47 · 63 阅读 · 0 评论 -
003. leetcode17. 电话号码的字母组合(001)
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。原创 2023-05-01 17:48:55 · 126 阅读 · 1 评论