leetcode 1802. 有界数组中指定下标处的最大值
发布人:shili8
发布时间:2024-12-28 14:56
阅读次数:0
**有界数组中指定下标处的最大值**
给定一个有界数组 `maxValue`,其中每个元素都是一个整数数组 `nums`,以及一个下标 `index`。要求找到在 `nums` 中 `index` 处的最大值,不少于1500。
**示例1:**
输入:`maxValue = [3,8,19,1]`, `index =2`
输出:`19`
**示例2:**
输入:`maxValue = [100000,100000,100000]`, `index =0`
输出:`100000`
**示例3:**
输入:`maxValue = [5,4,3,2,1]`, `index =4`
输出:`1`
**解决方案**
我们可以使用二分查找来找到在 `nums` 中 `index` 处的最大值,不少于1500。
class Solution: def maxValue(self, nums: List[int], index: int) -> int: # 将下标转换为左边界和右边界 left = right = index for num in nums: if num >=1500: return num # 使用二分查找找到最大值 while left < right: mid = (left + right) //2 if self.check(mid, nums): left = mid +1 else: right = mid return left def check(self, x: int, nums: List[int]) -> bool: # 检查是否有 x 个元素的子数组中存在大于或等于1500 的数字 count = sum(1 for num in nums if num >= x) return count >= x
**注释**
* `maxValue` 是一个有界数组,每个元素都是一个整数数组 `nums`。
* `index` 是一个下标,用于找到在 `nums` 中的最大值,不少于1500。
* `check` 函数检查是否有 x 个元素的子数组中存在大于或等于1500 的数字。
**时间复杂度**
* 时间复杂度为 O(n),其中 n 是 `maxValue` 中元素的数量。
**空间复杂度**
* 空间复杂度为 O(1),因为我们只使用了常数个额外变量。