LeetCode 503:下一个更大元素 II,循环数组中的右侧到哪里结束

题目要求 给定一个循环整数数组 nums,返回数组 answer。 对每个下标 i: answer[i] = 从 i 向右遇到的第一个严格大于 nums[i] 的元素值 如果绕行一圈后仍然没有更大元素,answer[i] = -1。 “循环数组”表示走过最后一个位置后,可以继续从下标 0 开始;但一个下标不能绕一圈后把自己当成答案。 LeetCode 提供的方法接口是: nextGreaterElements(nums: List[int]) -> List[int] 示例 1 输入:nums = [1,2,1] 输出:[2,-1,2] 第一个 1 向右首先遇到更大的 2。 2 绕行一圈也找不到严格更大的元素,答案是 -1。 最后一个 1 走到数组末尾后绕回开头,随后遇到 2。 示例 2 输入:nums = [2,2,2] 输出:[-1,-1,-1] 相等元素不属于“更大元素”。 示例 3 输入:nums = [7] 输出:[-1] 数组只有一个元素时,它不能把自己作为下一个更大元素。 约束 1 <= nums.length <= 10^4 -10^9 <= nums[i] <= 10^9 Step 1:循环数组中的“右边”到哪里结束 先看: ...

2026年7月20日 · 4 分钟 · map[name:Jeanphilo]

LeetCode 84:柱状图中最大的矩形,连续区间的高度由谁决定

题目要求 给定一个非负整数数组 heights。每个 heights[i] 表示宽度为 1 的柱子高度,所有柱子紧挨排列。 题目要求返回柱状图中能够形成的最大矩形面积。 一个合法矩形必须覆盖一段连续柱子。它的宽度是这段区间包含的柱子数量,高度不能超过区间中的最矮柱。 LeetCode 提供的方法接口是: largestRectangleArea(heights: List[int]) -> int 示例 1 输入:heights = [2,1,5,6,2,3] 输出:10 下标 2 和 3 的两根柱子高度分别是 5 和 6,可以形成高度 5、宽度 2、面积 10 的矩形。 示例 2 输入:heights = [2,4] 输出:4 可以选择高度 4、宽度 1,也可以选择高度 2、宽度 2,最大面积都是 4。 约束 1 <= heights.length <= 10^5 0 <= heights[i] <= 10^4 Step 1:矩形面积不是柱高之和 先看一个小柱状图: heights = [2,1,2] 如果矩形覆盖全部三根柱子,它的宽度是 3,但高度最多只能是 1: height = 1 width = 3 area = 1 * 3 = 3 不能把三根柱高相加得到 5。柱状图矩形覆盖的是一块完整矩形区域,中间高度为 1 的柱子会限制整个区间的矩形高度。 ...

2026年7月20日 · 5 分钟 · map[name:Jeanphilo]

LeetCode 739:每日温度,如何找到右侧第一个更高温度

题目要求 给定一个整数数组 temperatures,其中 temperatures[i] 表示第 i 天的温度。 返回数组 answer,其中: answer[i] = 从第 i 天开始,需要等待多少天才会遇到更高温度 如果之后没有更高温度,answer[i] = 0。 这里的“更高”是严格大于。相同温度不能结算等待中的日期。 LeetCode 提供的方法接口是: dailyTemperatures(temperatures: List[int]) -> List[int] 示例 输入:temperatures = [73,74,75,71,69,72,76,73] 输出:[1,1,4,2,1,1,0,0] 约束 1 <= temperatures.length <= 10^5 30 <= temperatures[i] <= 100 Step 1:答案不是更高温度,而是等待天数 先看一个更小的输入: temperatures = [73,71,72,76] 逐天回答: 第 0 天是 73,右侧第一个更高温度是第 3 天的 76,等待 3 天。 第 1 天是 71,第 2 天的 72 更高,等待 1 天。 第 2 天是 72,第 3 天的 76 更高,等待 1 天。 第 3 天右侧没有日期,答案是 0。 所以结果是: ...

2026年7月15日 · 3 分钟 · map[name:Jeanphilo]

LeetCode 42:一张高度图能接住多少雨水?

题目要求 给定 n 个非负整数 height。每个整数表示一根宽度为 1 的柱子高度,所有柱子从左到右相邻排列。 下雨后,有些较矮的柱子上方会被两侧较高的柱子围住水。返回整张高度图最终能接住的雨水总量。 LeetCode 要求实现: class Solution: def trap(self, height: List[int]) -> int: ... 示例 1 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 示例 2 输入:height = [4,2,0,3,2,5] 输出:9 约束 n == len(height) 1 <= n <= 2 * 10^4 0 <= height[i] <= 10^5 Step 1:先回答一个位置能接多少水 先不计算整张高度图,只看一个位置: height = [3,0,2] ^ i = 1 下标 1 的柱子高度是 0。它左边有高度为 3 的柱子,右边有高度为 2 的柱子。 如果只看左边,似乎可以把水加到高度 3。但右边的墙只有高度 2,超过 2 的水会从右边流走。因此这个位置的水面最高只能到: min(左侧最高柱子, 右侧最高柱子) = min(3, 2) = 2 这个位置上方的水量是: ...

2026年1月24日 · 6 分钟 · map[name:Jeanphilo]