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