python 下一个更大的元素(leetcode)
给你两个没有重复元素的数组nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出nums1 中每个元素子在nums2 中的下一个比较大的值。nums1 中数字x 的下一个更大元素是指nums2 中对应位置的右边的第一个比x 的元素。如果不存在,对应位置输出-1。解法一遍历查找代码如下:class Solution1:def nextGreaterElement(self,
·
给你两个没有重复元素的数组nums1 和 nums2 ,其中nums1 是 nums2 的子集。
请你找出nums1 中每个元素子在nums2 中的下一个比较大的值。
nums1 中数字x 的下一个更大元素是指nums2 中对应位置的右边的第一个比x 的元素。如果不存在,对应位置输出-1。
- 解法一
- 遍历查找
代码如下:
- 遍历查找
class Solution1:
def nextGreaterElement(self, nums1, nums2):
res = []
for i in range(len(nums1)):
index = nums2.index(nums1[i]) + 1
while index < len(nums2):
if nums1[i] < nums2[index]:
res.append(nums2[index])
break
index += 1
else:
res.append(-1)
return res
- 解法二
- 利用栈的单调性
- 代码如下
class Solution:
def nextGreaterElement(self, nums1, nums2):
# 利用栈的单调递增性
nl = len(nums2)
s1_s2 = {}
stack = [nums2[0]]
# 构建num2中的当前元素和下一个更大元素的映射
for i in range(1, nl):
while stack and nums2[i] > stack[-1]:
s1_s2[stack.pop()] = nums2[i]
stack.append(nums2[i])
return [s1_s2.get(item,-1) for item in nums1]

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)