代码随想录算法训练营29期Day61|LeetCode 739,496

   文档讲解:每日温度  下一个更大元素I

739.每日温度

题目链接:https://leetcode.cn/problems/daily-temperatures/description/

思路:

       维护一个单调递减的栈就行了。

       一次读取一个数组中的元素,将其与栈顶元素比较,如果比栈顶元素大,证明找到了栈顶元素右侧第一个比它大的,记录并弹出栈顶即可。

       重复上述比较直至该元素小于栈顶元素或者栈空。

       加入这个元素即可。

       重复上述操作可解决问题。

核心代码:

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<int> st;int n=temperatures.size();vector<int> ans(n,0);for(int i=0;i<n;i++){while(!st.empty()&&temperatures[st.top()]<temperatures[i]){ans[st.top()]=i-st.top();st.pop();}st.push(i);}return ans;}
};

496.下一个更大元素I

题目链接:https://leetcode.cn/problems/next-greater-element-i/description/

思路:

       这题有O(n^{2})的做法,就是枚举nums1中的数字,去nums2中遍历找到其位置,然后再向后找第一个比它大的值即可。

       这种方法很简单,也能过这道题数据范围,但不在此赘述。

       下面阐述一种O(n)的做法:

       对nums2使用单调栈,维护一个单调递减的序列(详情见上一道题目),由此可得到nums2中每个值右侧的第一个比它大的值,记为map。

       然后遍历nums1,根据map确定nums1中的值的下一个更大元素,获得答案数组输出即可。

核心代码:

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {map<int,int> mp;stack<int> st;int n=nums2.size();vector<int> ans(nums1.size(),-1);for(int i=0;i<n;i++){while(!st.empty()&&nums2[st.top()]<nums2[i]){mp[nums2[st.top()]]=nums2[i];st.pop();}st.push(i);}while(!st.empty()){mp[nums2[st.top()]]=-1;st.pop();}n=nums1.size();for(int i=0;i<n;i++) ans[i]=mp[nums1[i]];return ans;}
};

今日总结

        这次的题学习时长1h,挺简单的。

        接着论文idea,头大。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sqli-labs靶场第11关详解[Sqli-labs-less-11]

Sqli-labs-Less-11 前言&#xff1a; SQL注入的三个条件&#xff1a; ①参数可控&#xff1b;&#xff08;从参数输入就知道参数可控&#xff09; ②参数过滤不彻底导致恶意代码被执行&#xff1b;&#xff08;需要在测试过程中判断&#xff09; ③参数带入数据库执行。&…

杀疯啦!yolov9+bytetrack的目标跟踪实现

目录 YOLOV9介绍 bytetrack介绍&#xff1a; yolov9结合bytetrack实现目标跟踪 效果展示 训练与预测 UI设计 其他功能展示 完整代码实现UI界面 此次yolov9bytetrack不论是准确率还是稳定性&#xff0c;都超越了之前的yolobytetrack系列。 YOLOV9介绍 在目标检测…

Jitsi Meet 大型视频会议调优方案

jitsi meet 大型视频会议调优方案 在举办一些大型会议的时候,比如100个人会议,为了节约宽带和节省资源,我们并不会选择传输全部的音视频资源。 举个例子,比如100个人线下会议,如果大家都说话的情况下,大家要么听不清,要么听得是声音最大的那几个人。 视频会议也可以借…

VMware的三种连接模式

桥接模式 就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下&#xff0c;类似于把物理主机虚拟为一个交换机&#xff0c;所有桥接设置的虚拟机连接到这个交换机的一个接口上&#xff0c;物理主机也同样插在这个交换机当中&#xff0c;所以所有桥接下的网…

xss靶场实战(xss-labs-master靶场)

xss-labs-master靶场链接&#xff1a;https://pan.baidu.com/s/1X_uZLF3CWw2Cmt3UnZ1bTw?pwdgk9c 提取码&#xff1a;gk9c xss-labs level 1 修改 url 地址中的name<script>alert(1)</script>&#xff0c;便可以通关 level 2 在搜索框中输入的 JS 代码无法执行 …

微服务-微服务Spring Security OAuth 2实战

1. Spring Authorization Server 是什么 Spring Authorization Server 是一个框架&#xff0c;它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上&#xff0c;为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产…

冯诺依曼体系结构 计算机组成的金字塔

01 冯诺依曼体系结构&#xff1a;计算机组成的金字塔 学习计算机组成原理&#xff0c;到底是在学些什么呢&#xff1f;这个事儿&#xff0c;一两句话还真说不清楚。不过没关系&#xff0c;我们先从“装电脑”这个看起来没有什么技术含量的事情说起&#xff0c;来弄清楚计算机到…

链表OJ题第二弹:环形链表和环形链表 II

前言 第一弹的链表题目比较基础&#xff0c;下面两道题目难度升级&#xff0c;可以先自己挑战一下&#xff0c;再来看解析。解析有图示和的文字&#xff0c;有助于你的理解。 1. 环形链表 &#xff08;1&#xff09;题目及示例 给定一个链表的头节点 head &#xff0c;返回…

Stable Diffusion 3 发布及其重大改进

1. 引言 就在 OpenAI 发布可以生成令人瞠目的视频的 Sora 和谷歌披露支持多达 150 万个Token上下文的 Gemini 1.5 的几天后&#xff0c;Stability AI 最近展示了 Stable Diffusion 3 的预览版。 闲话少说&#xff0c;我们快来看看吧&#xff01; 2. 什么是Stable Diffusion…

dolphinscheduler集群部署教程

文章目录 前言一、架构规划二、配置集群免密登录1. 配置root用户集群免密登录1.1 hadoop101节点操作1.2 hadoop102节点操作1.3 hadoop103节点操作 2. 创建用户2.1 hadoop101节点操作2.2 hadoop102节点操作2.3 hadoop103节点操作 三、安装准备1. 安装条件2. 安装jdk3. 安装MySQL…

一个支持将Html页面转为PDF的.Net开源项目

推荐一个可以将Html页面转为PDF的开源项目。 01 项目简介 这是一个基于.Net开发的开源项目&#xff0c;本质是用 Webkit 引擎将 HTML 页面转换为 PDF&#xff0c;可以用在控制台、 Web 应用程序和 Web API中。 02 使用示例 1、创建转化器 //同步转化器 var converter new…

React18源码: Fiber树的初次创建过程图文详解

fiber树构造&#xff08;初次创建&#xff09; fiber树构造的2种情况&#xff1a; 1.初次创建 在React应用首次启动时&#xff0c;界面还没有渲染此时并不会进入对比过程&#xff0c;相当于直接构造一棵全新的树 2.对比更新 React应用启动后&#xff0c;界面已经渲染如果再次发…