LeetCode 739每日温度 496 下一个更大元素 | 代码随想录25期训练营day58

单调栈1

LeetCode 739 每日温度 2023.12.21

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
vector<int> dailyTemperatures(vector<int>& temperatures) {
    //暴力求解,但会超时
    /*
        vector<int> answer(temperatures.size(), 0);
        for (int i = 0; i < temperatures.size(); i++)
        {
            for(int j = i+1; j < temperatures.size(); j++)
            {
                if(temperatures[j] > temperatures[i])
                {
                    answer[i] = j - i;
                    break;
                }
            }
        }
        return answer;
        */

    //单调栈求解
    //answer数组存储题目答案
    vector<int> answer(temperatures.size(), 0);
    //创建单调栈存储已经遍历过的元素的索引,且该栈元素呈单调递增
    stack<int> st;
    //正序遍历
    for (int i = 0; i < temperatures.size(); i++)
    {
        //当栈不为空且栈顶索引的温度小于当前遍历温度时
        //这里是循环,不是if
        while(!st.empty() && temperatures[st.top()] < temperatures[i])
        {
            //存储答案
            answer[st.top()] = i - st.top();
            //有答案的索引被去掉
            st.pop();
        }
        //这里的条件是走完了上面的循环或者索引的温度大于或等于当前遍历温度
        st.push(i);
    }
    return answer;
}

LeetCode 496 下一个更大元素 2023.12.21

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
    //暴力搜索
    /*
        vector<int> ans(nums1.size(), -1);
        for (int i = 0; i < nums1.size(); i++)
        {
            //找到nums1[i]在nums2中的索引
            int pos = find(nums2.begin(), nums2.end(), nums1[i]) - nums2.begin();
            for(int j = pos + 1; j < nums2.size(); j++)
            {
                if(nums2[j] > nums1[i])
                {
                    ans[i] = nums2[j];
                    break;
                }
            }
        }
        return ans;
        */

    //单调栈
    //ans数组存储题目答案,默认值设为-1,因为找不到的话是-1
    vector<int> ans(nums1.size(), -1);
    //创建单调栈存储已经遍历过的元素的索引,且该栈元素呈单调递增
    stack<int> st;
    //因为nums1是nums2的子集,而且搜索的是nums2数组,所以遍历nums2数组
    for (int i = 0; i < nums2.size(); i++)
    {
        //当栈不为空且栈顶索引的数值小于当前遍历数值时
        //这里是循环,不是if
        while (!st.empty() && nums2[i] > nums2[st.top()])
        {
            //这里查找栈顶索引对应的元素是否为nums1中元素,如果是,则记录进ans中
            vector<int>::iterator it = find(nums1.begin(), nums1.end(), nums2[st.top()]);
            if(it != nums1.end())
                ans[it-nums1.begin()] = nums2[i];
            //删除栈顶元素
            st.pop();
        }
        //这里的条件是走完了上面的循环或者索引的数值大于或等于当前遍历数值
        st.push(i);
    }
    return ans;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/260901.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BWS2000倾角传感器c++测试代码【2】

问题一&#xff1a;串口频率的初始化 由于本次项目之中使用的线长为40米的倾角传感器&#xff0c;需要对于其频率输出存在要求&#xff0c;如何测试其频率如下所示&#xff1a; 如上所示相应的软件&#xff0c;软件中存在一句如果设置后不保存&#xff0c;则存在传感器断电后设…

开源堡垒机JumpServer结合内网穿透实现远程访问

开源堡垒机JumpServer结合内网穿透实现远程访问 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 …

python使用Tesseract

python使用Tesseract 一、介绍二、安装Tesseract三、使用Tesseract3.1 简单例子 一、介绍 Tesseract是一个开源的ocr工具&#xff0c;它是由C编写的&#xff0c;可以直接在Windows上运行&#xff0c;也可以用各种编程语言调用。 二、安装Tesseract Tesseract支持多个平台&am…

C#中var、object和dynamic的区别

在C#编程语言中&#xff0c;我们经常会遇到var、object和dynamic这三个关键字。它们都用于声明变量&#xff0c;但在使用方法和特性上存在一些重要的区别。本文将详细介绍这三者的差异。 目录 var关键字object关键字dynamic关键字总结 var关键字 var是C#语言中的隐式类型推断…

CentOS 7 Tomcat服务的安装

前提 安装ava https://blog.csdn.net/qq_36940806/article/details/134945175?spm1001.2014.3001.5501 1. 下载 wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.84/bin/apache-tomcat-9.0.84.tar.gzps: 可选择自己需要的版本下载安装https://mirr…

使用Python爬取GooglePlay并从复杂的自定义数据结构中实现解析

文章目录 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》&#xff0c;对分布…

Hbase的安装配置

注&#xff1a;本文默认已经完成hadoop的下载以及环境配置 1.上传zookeeper和hbase压缩包到指令路径并且解压 (理论上讲&#xff0c;hbase其实内置了zookeeper&#xff0c;我们也可以不另外下载&#xff0c;另外下载的目的在于减少组件间依赖性) cd /home mkir hbase cd /hom…

本地MinIO存储服务如何创建Buckets并实现公网访问上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统&#xff0c;它可以100%的运行在标准硬件上&#xff0c;即X86等…

穿越时空的电商之旅:探索古老文化中的现代商机

随着全球化的发展&#xff0c;电商成为商业领域中的一匹黑马&#xff0c;以其便捷、高效的特性迅速改变着人们的购物方式。然而&#xff0c;电商并非仅限于当代社会&#xff0c;它也可以穿越时空&#xff0c;走进古老的文化中&#xff0c;挖掘出丰富的商机。本文将带领读者进行…

Opencv入门6(读取彩色视频并转换为对数极坐标视频)

源码如下&#xff1a; #include <opencv2/opencv.hpp> #include <iostream> int main(int argc, char* argv[]) { cv::namedWindow("Example2_11", cv::WINDOW_AUTOSIZE); cv::namedWindow("Log_Polar", cv::WINDOW_AUTOSIZE); c…

OLED主题展厅:领略新一代显示技术的无限可能

欢迎来到【OLED主题展厅】&#xff0c;这里是OLED应用的未来&#xff0c;是科技与艺术的完美结合。在这里&#xff0c;我们将带您领略新一代OLED显示屏的独特魅力&#xff0c;展示其在商显领域的最新技术和创新解决方案。 一、新一代OLED显示屏的应用案例和示范 在【OLED主题展…

《信息安全工程师教材》-蒋建春、信息安全完全参考手册-Mark Rhodes Ousley、CISSP官方学习指南第九版、ISO27002学习

文章目录 介绍关系学习顺序重复内容学习方法建议学习时间可能重合的部分更详细的学习计划 介绍 《信息安全工程师教材》- 蒋建春&#xff1a;这本教材可能是针对中国地区信息安全工程师的认证考试而编写的&#xff0c;它可能会涵盖信息安全的基本概念、技术和政策&#xff0c;特…

生成对抗网络与人工智能的完美融合:创新、艺术与未来

导言 生成对抗网络&#xff08;GAN&#xff09;作为一种深度学习框架&#xff0c;以其独特的生成能力引起广泛关注。生成对抗网络&#xff08;GAN&#xff09;与人工智能的结合不仅在科学领域引起了巨大的关注&#xff0c;也在艺术、医学等多个领域催生了令人振奋的创新。本文将…

代码随想录算法训练营第九天 | 28、找出字符串中第一个匹配项的下标、459. 重复的子字符串

28、找出字符串中第一个匹配项的下标 题目链接&#xff1a;28、找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 …

使用Docker部署Nexus Maven私有仓库并结合Cpolar实现远程访问

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具&#xff0c;用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关&#xff0c;可…

abaqus复合材料与混凝土、opensees钢筋混凝土

专题课程的通知 一、培训背景&#xff1a; ABAQUS作为现阶段应用最广泛的有限元仿真模拟软件&#xff0c;优秀的分析能力和模拟复杂系统的可靠性使得ABAQUS被各国的工业和科学研究中广泛采用。通过合理的建模和分析&#xff0c;可以更好地理解复合材料的力学行为&#xff0c;…

探索统计学:Python中的Statsmodels库统计推断

写在开头 统计推断是数据科学中的一个核心领域,它通过从样本中提取信息来对整个总体进行推断。在实际的数据分析中,我们常常需要了解样本的特征,并基于这些样本推断总体的性质。这正是统计学的魅力所在。在本文中,我们将深入研究统计推断的各个方面,着重介绍在Python中应…

Ubuntu 常用命令之 gzip 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 gzip 是一个在 Linux 和 Unix 系统中常用的文件压缩工具。它的名字来源于 GNU zip&#xff0c;作为一个自由软件&#xff0c;它是 GNU 项目的一部分。gzip 命令通常用于压缩文件&#xff0c;以节省磁盘空间&#xff0c;或者减小文…

IDEA 黑色主题很难看到鼠标

“控制面板”—搜索“鼠标”关键字—选择“更改鼠标设置” 参考&#xff1a; IDEA 黑色主题很难看到鼠标

2023 英特尔On技术创新大会直播 | 边云协同加速 AI 解决方案商业化落地

目录 前言边云协同时代背景边缘人工智能边缘挑战英特尔边云协同的创新成果最后 前言 最近观看了英特尔On技术创新大会直播&#xff0c;学到了挺多知识&#xff0c;其中对英特尔高级首席 AI 工程张宇博士讲解的边云协同加速 AI 解决方案商业化落地特别感兴趣。张宇博士讲解了英…