题解 | #寻找最合适的生育区域#
寻找最合适的生育区域
https://www.nowcoder.com/practice/c183c254a5c94b9da341fb27fb3caf99
- 题目考察的知识点 : 双指针
- 题目解答方法的文字分析:
- 在每次循环迭代中,先找到当前窗口范围内的最大和最小高度,然后判断它们的差是否小于等于阈值 k。如果是就更新最大合适范围的长度;否则就将窗口左边界 left 右移,直到找到一个新的窗口,使其满足高度差小于等于阈值 k。在每次更新窗口左边界时,需要重新计算窗口范围内的最大和最小高度,因为这些值可能已经发生了变化
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param heights int整型一维数组 # @param k int整型 # @return int整型 # class Solution: def findMaxRangeWithinThreshold(self, heights: List[int], k: int) -> int: n = len(heights) left = 0 # 滑动窗口左边界 maxRange = 0 # 最大合适范围长度 for right in range(n): maxH = max(heights[left:right+1]) # 当前窗口内的最大高度 minH = min(heights[left:right+1]) # 当前窗口内的最小高度 # 如果当前窗口内的最大和最小高度的差小于等于 k,更新范围长度 if maxH - minH <= k: maxRange = max(maxRange, right - left + 1) else: # 否则,更新左边界 left,使其指向下一个可能的合适范围的起始位置 while maxH - minH > k: left += 1 maxH = max(heights[left:right+1]) minH = min(heights[left:right+1]) return maxRange
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路