-
发表于 2024.04.09
-
二分搜索的简单题目,先实现一个二分搜索函数
maximumCount
以计算大于等于指定值target
的最小值索引,然后负整数的数目为maximumCount(0)
(比0小的数量),正整数的数目为n - maximumCount(1)
(大于等于1的数量)。import math class Solution: def maximumCount(self, nums: List[int]) -> int: def binarySearch(target: int) -> int: """ 返回大于等于target的最小值索引 """ nonlocal n, nums lo, hi = 0, n - 1 while lo <= hi: mid = (lo + hi) >> 1 if nums[mid] < target: lo = mid + 1 else: hi = mid - 1 return lo n = len(nums) neg = binarySearch(0) pos = n - binarySearch(1) return max(neg, pos)
- LC 题目链接
-