LC 2576. 求出最多标记下标
https://leetcode.cn/problems/find-the-maximum-number-of-marked-indices/
二分还是要想清楚思路,思路对了才行。这题我最开始想到了二分,但是不知道怎么进行验证。
如果是k的话,那么选择最小k元素,和最大k元素,然后确认两两之间是否满足条件就行。
class Solution:
def maxNumOfMarkedIndices(self, nums: List[int]) -> int:
nums.sort()
def test(k):
a = nums[:k]
b = nums[-k:]
for x, y in zip(a, b):
if 2 * x > y:
return False
return True
s, e = 1, len(nums) // 2
while s <= e:
m = (s + e) // 2
if test(m):
s = m + 1
else:
e = m - 1
return 2 * e