首页 > 其他分享 >496. 下一个更大元素 I

496. 下一个更大元素 I

时间:2024-07-25 17:51:02浏览次数:6  
标签:int 元素 st 更大 496 nums1 nums2

传送锚点:

. - 力扣(LeetCode)

nums1 中数字 x下一个更大元素 是指 xnums2 中对应位置 右侧第一个x ****大的元素。

给你两个 没有重复元素 的数组 nums1nums2 ,下标从 0 开始计数,其中nums1nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j]下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1

返回一个长度为 nums1.length 的数组 **ans **作为答案,满足 **ans[i] **是如上所述的 下一个更大元素

示例 1:

输入:nums1 = [4,1,2], nums2 = [1,3,4,2].
输出:[-1,3,-1]
解释:nums1 中每个值的下一个更大元素如下所述:
- 4 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。
- 1 ,用加粗斜体标识,nums2 = [1,3,4,2]。下一个更大元素是 3 。
- 2 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。

示例 2:

输入:nums1 = [2,4], nums2 = [1,2,3,4].
输出:[3,-1]
解释:nums1 中每个值的下一个更大元素如下所述:
- 2 ,用加粗斜体标识,nums2 = [1,2,3,4]。下一个更大元素是 3 。
- 4 ,用加粗斜体标识,nums2 = [1,2,3,4]。不存在下一个更大元素,所以答案是 -1 。

思路

code

class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
        int n1 = nums1.size(), n2 = nums2.size();
        stack<int> st;//为nums2的单调栈 存储nums2的下标
        vector<int> ans1(n1, -1);
        vector<int> ans2(n2, -1);//ans2[i]为nums2中比nums2[i]更大的数
        for(int i = 0; i < n2; i++){
            int t = nums2[i];
            while(st.size() && t > nums2[st.top()]){
                ans2[st.top()] = t;
                st.pop();
            }
            st.push(i);
        }
        for(int i = 0; i < n1; i++){
            int pos = std::find(nums2.begin(), nums2.end(), nums1[i]) - nums2.begin();//找到在nums2中比nums[1]更大的数的下标
            ans1[i] = ans2[pos];
        }
        return ans1;
    }
};

标签:int,元素,st,更大,496,nums1,nums2
From: https://www.cnblogs.com/6Luffy6/p/18323830

相关文章

  • 存在重复元素 II-哈希表
    题目描述:个人题解:从左到右遍历数组nums,当遍历到下标i时,如果存在下标j<i使得nums[i]=nums[j],则当i−j≤k时即找到了两个符合要求的下标j和i。如果在下标i之前存在多个元素都和nums[i]相等,为了判断是否存在满足nums[i]=nums[j]且i−j≤k的下标j,应该在这......
  • (三)复习第三课(07.20- 07.25第二轮):HTML标签元素练习大全
    <!DOCTYPEhtml><!--练习时间:2024.07.20-2024.07.25--><htmllang="en"><!--添加了en可以让你的网站打开时会提示翻译--><head> <pid="head1"></p><metacharset="utf-8"><!--对于中文网页需要使用此标签声明编码,否则会出现......
  • 《用comfyUI挑战全网AI图片产品实践案例》之comfyUI人像摄影处理工作流(换脸、换衣服、
    大家好,我是安琪这一期《用comfyUI挑战全网AI图片产品实践案例》教程是关于人像摄影图片处理。用comfyUI制作工作流,实现人像摄影图片换脸、换衣服,换背景,换其他元素的功能。在数字艺术领域,AI技术已经逐渐成为艺术创作的新趋势。comfyUI作为一款优秀的AI图像处理工具,提供了强......
  • 高 DPI 下的 PyPlot 绘图更大,但仍然模糊
    我正在按照教程生成点的散点图,按簇着色,并根据每个点在其各自簇中的成员资格强度进行颜色饱和。我提到了着色细节,以防它们影响分辨率,但我怀疑它们不会。我发现,如果我增加PyPlot图形的DPI,图形的大小会增加,但仍然非常模糊。下面是我的测试代码,它生成一个小DPI数字和一......
  • Python获取list中指定元素索引的两种方法
    在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等。怎么办?看下面方法一:利用数组自身的特性list.index(target),其中a是你的目标list,target是你需要的下标对应的值li=[10,8,9,26,72,6,28]print(li.index(8))但是,......
  • 如何在迭代列表时从列表中删除元素而不跳过未来的迭代
    在Python中,我注意到如果我用forxiny迭代列表,并且在循环中删除y的元素,最后一个元素将被“跳过”-我假设这是因为len(y)已更改。我正在尝试获取具有特定扩展名的所有文件,但满足某些条件的文件除外。这是原始代码:deftest_print_numTXTs(......
  • python Polars:替换嵌套列表的元素
    有谁知道是否可以有效地替换极坐标中嵌套列表的元素。例如:s=pl.Series('s',[[1,2,3],[3,4,5]])#replace3with10toget[[1,2,10],[10,4,5]]我已经尝试过s.to_frame().with_columns(pl.when(pl.col('s')==3)...)但是pl.when不喜欢List[bo......
  • 比较Python字典并找到缺失的元素
    我遇到了一个问题,我已经尝试了几天但没有得到任何结果。我想比较两个字典,在一个字典中有“赛前”足球比赛,在第二个字典中有“现场”足球比赛。我想将它们相互比较并打印它们(如果有)没有赛前比赛直播。示例1pre=[{"Home":"Genoa","Away":"In......
  • 代码随想录算法训练营第三天 | Leetcode 203 移除链表元素 Leetcode 206 翻转链表
    前言今天的两道题目都不难,但细节需要注意。如移除链表元素用到的虚拟头节点,翻转链表的思路。翻转链表真是写了忘,忘了写,希望这次能记住。除此之外我决定每天的记录里面增加一个总结八股的部分,将来二刷再翻看文章的时候顺便也能复习八股知识点。Leetcode203移除链表元素题目......
  • 第四十八天 第十章 单调栈part01 739. 每日温度 496.下一个更大元素 I 503.下一个更大
     739.每日温度 使用单调栈:注意栈中的递增递减顺序。classSolution{public:vector<int>dailyTemperatures(vector<int>&temperatures){vector<int>res(temperatures.size(),0);stack<int>sta;sta.push(0);for(int......