LC 二分、位运算与数学
文章平均质量分 56
Leetcode与Lintcode 二分、位运算与数学
记录算法题解
算法与数学
展开
-
【Leetcode】278. First Bad Version
个代码版本,从某个版本开始就一直有bug。求第一个有bug的版本。来判断某个版本是否有bug。原创 2023-10-30 10:53:14 · 45 阅读 · 0 评论 -
【Leetcode】2226. Maximum Candies Allocated to K Children
【代码】【Leetcode】2226. Maximum Candies Allocated to K Children。原创 2024-09-18 16:48:36 · 188 阅读 · 0 评论 -
【Leetcode】910. Smallest Range II(配数学证明)
的话,最大值不会变,而最小值有可能变大,所以极差不会变大。直接枚举分界线即可。假设已经从小到大排好序。然后,可以证明对于任意使得极差最小的方案,都可以将其调整为,有个分界线,之前都是。,要使得整个数组的极差最小,问最小的极差是多少。这个数组的最小值和最大值很容易求。,在这种方案下,最大值一定是。,强制让每一项减或者加。原创 2024-08-19 06:36:15 · 730 阅读 · 0 评论 -
【Leetcode】1515. Best Position for a Service Centre
单元凸函数求最小值可以用三分法,而二维凸函数求最小值可以用三分套三分的方法。原创 2024-08-15 22:29:49 · 585 阅读 · 0 评论 -
【Leetcode】1508. Range Sum of Sorted Subarray Sums
的最大的数,而这个可以用二分答案来做。将这些和从小到大排序,问排序之后位于第。,如果将其所有子数组和求出来,则一共有。个的那些和的总和是多少。设子数组的和组成的数组是。数组上用双指针来求。,所以我们只需要会求。这一步,可以在前缀和。的所有子段和的和就是。原创 2024-08-15 12:30:59 · 614 阅读 · 0 评论 -
【Leetcode】2702. Minimum Operations to Make Numbers Non-positive
我们只需要验证哪些数需要额外的机会,并且总的额外的机会个数是否小于等于。次操作是否能达到目的。我们可以将一次操作理解为,先将所有数都减去。问至少多少次操作可以使得整个数组每个数都非正。每一次操作允许将某个位置的数减。次操作就可以理解为,每个数先减去。,同时再挑一个数减去。原创 2024-08-14 16:55:06 · 735 阅读 · 0 评论 -
【Leetcode】1342. Number of Steps to Reduce a Number to Zero
【代码】【Leetcode】1342. Number of Steps to Reduce a Number to Zero。原创 2024-08-11 02:24:54 · 379 阅读 · 0 评论 -
【Leetcode】378. Kth Smallest Element in a Sorted Matrix
题目地址:https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/给定一个二维矩阵,求其中的第kkk小元素。原创 2020-09-11 00:00:47 · 152 阅读 · 1 评论 -
【Leetcode】899. Orderly Queue(配数学证明)
个字母其中的一个移到最后。问这样操作能得到的字典序最小的字符串是什么。所以本质上任意排列都能得到,所以直接排序就行了。,我们可以证明任何对换都能由上面的操作得到。所有轮换的最小字典序,直接暴力枚举即可。允许做若干次操作,每一次将。原创 2024-02-11 16:26:30 · 991 阅读 · 1 评论 -
【Leetcode】1011. Capacity To Ship Packages Within D Days
代表每个货物的重量。有一个运输车,其有一个载重,它需要按照顺序将每个货物装载并运到另一个地方,每天运一次。,问车的最小载重,使得运输的天数小于等于。原创 2024-01-09 16:30:27 · 419 阅读 · 0 评论 -
【Leetcode】1891. Cutting Ribbons
木棍不能拼接,只能剪断。是单调的,从而可以二分。,问是否可以将那些木棍截取出至少。(否则切不出长度了),对于长度。条木棍及其长度,以数组。原创 2024-01-05 17:08:28 · 459 阅读 · 0 评论 -
【Leetcode】1286. Iterator for Combination
的这一位取,否则代表不取。我们考虑怎么让字典序变得稍微大一些,其实就是让那个二进制数小一点。只含不同的字符,并且按字典序已经从小到大排好。的后缀,那已经最大了;如果不是,我们从后向前找第一个。,要求设计一个迭代器,每次返回长。之后的部分已经最小了,我们让那个。,我们将其映射到一个二进制数,字典序最小的子序列当然就是。,然后再继续向前找到第一个。向后挪一步,然后将其后面的。next的时间复杂度。,hasNext时间。原创 2023-12-05 15:01:06 · 58 阅读 · 0 评论 -
【Leetcode】1283. Find the Smallest Divisor Given a Threshold
再给定一个大于等于。原创 2023-12-04 04:31:00 · 54 阅读 · 0 评论 -
【Leetcode】2413. Smallest Even Multiple
【代码】【Leetcode】2413. Smallest Even Multiple。原创 2023-12-03 09:07:35 · 44 阅读 · 0 评论 -
【Leetcode】1276. Number of Burgers with No Waste of Ingredients
问是否存在一个方案使得这些资源恰好能用完。个奶酪,第二类汉堡需要。原创 2023-11-29 10:29:31 · 54 阅读 · 0 评论 -
【Leetcode】2354. Number of Excellent Pairs
中可重复地挑出两个数所组成的,同一个数可以被挑多次。两个数对不同当且仅当其某一维不同。,则说这两个数形成了一个好数对。一个数对可以看做是在。的总个数其实就等于两个数的二进制位。的总个数大于等于某个给定的正整数。可以统计一下二进制位。的数字个数),那么答案就是。的数字有多少个,得数组。原创 2023-11-02 13:59:49 · 115 阅读 · 0 评论 -
【Leetcode】2317. Maximum XOR After Operations
我们尽量想让异或和每一位都变成。,那这一位无论怎么变都是。原创 2023-11-02 03:00:31 · 49 阅读 · 0 评论 -
【Leetcode】1627. Graph Connectivity With Threshold
可以用并查集来维护有连边这一性质。两个点有连边当且仅当这两个点的编号有一个大于某个非负整数。个询问,每次询问两个顶点之间是否有连边,求询问结果。个点的无向图,顶点编号。原创 2023-11-02 02:14:37 · 41 阅读 · 0 评论 -
【Leetcode】1686. Stone Game VI(配数学证明)
题目地址:https://leetcode.com/problems/stone-game-vi/给定共nnn个石子,AAA和BBB两个人轮流取石子,每个人每轮可以取任意一个石子,但同一个石子被AAA取或被BBB取,他们得到的分数是不同的。AAA取得到的分数以数组aaa表示,BBB取得到的分数以数组bbb表示。双方都尽量对自己最优的方式玩游戏。问最后谁能赢。AAA赢则输出111,BBB赢则输出−1-1−1,平手则输出000。设AAA的取石子方案是(x0,x1,...,xn−1)(x_0,x_1,...原创 2020-12-21 14:16:58 · 365 阅读 · 1 评论 -
【Leetcode】391. Perfect Rectangle
个矩形,每个矩形给出其左上和右下两个点的坐标。问这些矩形是否形成一个大的矩形,并且大的矩形内每个点只被一个小矩形覆盖。如果这些矩形按要求形成了一个大矩形,我们开一个哈希表对所有的端点计数,如果一个点作为左上或者右下的点,则计数加。,并且最后的大矩形的四个点的计数的绝对值是。,如果作为左下或者右上的点,则计数减。那么最后内部的点的计数一定都是。按这个条件判断即可。原创 2023-10-23 15:09:23 · 68 阅读 · 0 评论 -
【Leetcode】2475. Number of Unequal Triplets in Array
所以可以按步骤求解,先求。原创 2023-08-27 10:13:08 · 57 阅读 · 0 评论 -
【Leetcode】1401. Circle and Rectangle Overlapping
给定一个圆的圆心和半径,还有一个矩形的左下点和右上点,矩形是正着放的,问圆和矩形是否有交集。题目保证圆心和矩形的四个点都是整点,并且半径也是整数。如果圆心在矩形内那肯定有交集。否则的话,有交集等价于矩形的四条边上有整点在圆内,可以暴力枚举。原创 2023-02-26 08:02:02 · 200 阅读 · 0 评论 -
【Leetcode】769. Max Chunks To Make Sorted
如果第一次发现已经遍历的那一段的最大值恰好是当前位置的下标,则说明说明这个最大值所在的位置到当前位置应当成为一个需要排序的段(否则这个最大值无法归位),排好序之后,后面的过程类似。,问最多将这个数组划分为多少段,可以使得段内排好序之后整个数组就有序了。原创 2023-02-26 05:47:53 · 173 阅读 · 0 评论 -
【Leetcode】436. Find Right Interval
记录一下每个左端点对应的区间下标,然后按左端点从小到大排序,接着枚举每个区间,二分求左端点大于等于其右端点且左端点最小的区间。,对每个数组,求左端点大于等于其右端点且左端点最靠左的区间的下标。题目保证每个区间左端点各不相同。原创 2023-01-24 17:24:45 · 218 阅读 · 0 评论 -
【Leetcode】229. Majority Element II
不过这次是开两个备选变量,具体思路见代码。思路是Moore投票算法,类似。原创 2023-01-10 08:00:49 · 219 阅读 · 0 评论 -
【Leetcode】592. Fraction Addition and Subtraction
构造一个分数类,然后截取出所有项求个总和即可。,运算只有加减,求其结果,并以既约分数的形式输出。的分数加减法的表达式。原创 2023-01-10 07:25:20 · 209 阅读 · 0 评论 -
【Leetcode】880. Decoded String at Index
则当前字符就是我们要找的字符,否则我们考虑少了最后那个字符的新字符串,其长度为。,然后我们一步步“加密”回来寻找答案,加密的过程即为从后向前遍历。的数字,其还原方式如下:读到字符则记录,读到数字。无论怎样,问题的规模都会缩小。则是最后一个字符);如果遇到的是字符,此时如果。则说明是最后一个字符),所以我们考虑加密。的过程,也是递归的思想。,则说明加密一次后字符串变为了。次后的新字符串,其长度即为。问还原后的字符串的第。则将记录好的字符串重复。,我们要求新字符串的第。个字符即为加密后的第。原创 2023-01-08 10:00:01 · 400 阅读 · 1 评论 -
【Leetcode】878. Nth Magical Number
整除的数的个数就越多,所以可以二分。整除的数的个数可以用容斥原理,即为。的最小公倍数,其等于。原创 2023-01-08 09:23:12 · 217 阅读 · 0 评论 -
【Leetcode】875. Koko Eating Bananas
这就是搜索范围,可以二分。代表香蕉个数,一个猴子可以按每小时。个香蕉的速度吃每一堆香蕉,问。越大需要的时间就越小。的时候所需时间小于等于。小时内吃完所有香蕉。原创 2023-01-08 08:45:31 · 192 阅读 · 0 评论 -
【Leetcode】1486. XOR Operation in an Array
【代码】【Leetcode】1486. XOR Operation in an Array。原创 2023-01-04 03:09:19 · 131 阅读 · 0 评论 -
【Leetcode】1073. Adding Two Negabinary Numbers
首先两个数组右对齐的话是可以加起来的,所以问题就转化为怎么将一个形如。不是偶数,那这一位的最终值一定是。进制的数,最右边的是。原创 2023-01-03 02:33:45 · 132 阅读 · 0 评论 -
【Leetcode】991. Broken Calculator
这样每一步操作都是确定的,直接模拟即可。,问至少多少步能变成。的话,那么一定要除以。原创 2023-01-02 17:15:45 · 123 阅读 · 0 评论 -
【Leetcode】972. Equal Rational Numbers
其格式为非空的整数部分,后面可能跟小数点也可能不跟,如果跟,后面再跟小数部分也可能不跟,如果跟,小数部分里可能有循环节。题目保证如果有循环节,则循环节会被小括号括起来,并且一定在末尾。问两个数字是否相等。循环小数一定是有理数,从而可以化为既约分数。可以直接将两个字符串都化为既约分数再判断是不是相等。给定两个字符串表示的数字。原创 2023-01-02 15:02:12 · 138 阅读 · 0 评论 -
【Leetcode】172. Factorial Trailing Zeroes
【代码】【Leetcode】172. Factorial Trailing Zeroes。原创 2023-01-02 13:31:08 · 183 阅读 · 0 评论 -
【Leetcode】292. Nim Game
代表石子的个数,甲乙双方轮流取石子,每次可以取。个石子,甲先取,问甲是否有必胜策略。原创 2023-01-02 13:26:16 · 121 阅读 · 0 评论 -
【Leetcode】231. Power of Two
然后用lowbit即可。原创 2023-01-02 13:10:59 · 117 阅读 · 0 评论 -
【Leetcode】793. Preimage Size of Factorial Zeroes Function
可以二分来做,取右端点的时候要保证右端点的阶乘的。,求有多少个非负整数的阶乘末尾恰好有。是有多少个非负整数的阶乘末尾的。而一个数的阶乘末尾有多少个。而一个数越大,其阶乘末尾的。的个数不会变少的,所以。,取决于其阶乘里因子。原创 2022-12-30 14:37:16 · 98 阅读 · 0 评论 -
【Leetcode】162. Find Peak Element
是否成立,如果成立则说明左边一定有峰值,否则右边有峰值。中的严格大于其左右邻居的数的下标。接下来可以二分,直接看分点。原创 2022-12-11 02:30:50 · 150 阅读 · 0 评论 -
【Leetcode】164. Maximum Gap
只能是不同区间的数的差,我们只需枚举所有的后面一个区间的最小值减去前一个区间的最大值的差,然后找到最大的差即可。中的数,同时存一下其最大和最小值,最后遍历一遍即可。,从而同一个区间内部的两个数的差不可能等于答案,从而。自己,其不属于任何区间)。我们记录一下每个区间是否有。平均划分为若干个左开右闭的区间,然后想象一下将。中的所有数都放进去。,设其按从小到大排好序之后是。,我们令平均划分的区间长度为。的最小值和最大值分别为。的数的差值都是小于等于。原创 2022-12-11 02:17:21 · 368 阅读 · 0 评论 -
【Leetcode】154. Find Minimum in Rotated Sorted Array II
但是这里由于可能有重复元素,我们需要将右边等于。原创 2022-12-10 15:25:55 · 116 阅读 · 0 评论