题解 | #寻找最合适的生育区域#

寻找最合适的生育区域

https://www.nowcoder.com/practice/c183c254a5c94b9da341fb27fb3caf99

  • 题目考察的知识点 : 双指针
  • 题目解答方法的文字分析:
  1. 在每次循环迭代中,先找到当前窗口范围内的最大和最小高度,然后判断它们的差是否小于等于阈值 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题的解法思路

全部评论

相关推荐

吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务