当前位置:实例文章 » 其他实例» [文章]leetcode 1802. 有界数组中指定下标处的最大值

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),因为我们只使用了常数个额外变量。

其他信息

其他资源

Top