Leetcode739. 每日温度

Every day a Leetcode

题目来源:739. 每日温度

解法1:单调栈-从左到右

单调栈中记录还没算出「下一个更大元素」的那些数(的下标)。

代码:

/*
 * @lc app=leetcode.cn id=739 lang=cpp
 *
 * [739] 每日温度
 */

// @lc code=start

// 暴力
// Time Limit Exceeded

// class Solution
// {
// public:
//     vector<int> dailyTemperatures(vector<int> &temperatures)
//     {
//         int n = temperatures.size();
//         vector<int> answer(n, 0);
//         for (int i = 0; i < n - 1; i++)
//         {
//             int j = i + 1;
//             while (j < n && temperatures[i] >= temperatures[j])
//                 j++;
//             answer[i] = j == n ? 0 : j - i;
//         }
//         return answer;
//     }
// };

// 单调栈

class Solution
{
public:
    vector<int> dailyTemperatures(vector<int> &temperatures)
    {
        int n = temperatures.size();
        vector<int> answer(n, 0);
        stack<int> indices;
        for (int i = 0; i < n; i++)
        {
            while (!indices.empty())
            {
                int preIndex = indices.top();
                // 如果当前温度<=之前的温度,退出
                if (temperatures[i] <= temperatures[preIndex])
                    break;
                // 否则,之前温度对应下标的天数=当前下标i-之前下标preIndex
                indices.pop();
                answer[preIndex] = i - preIndex;
            }
            indices.push(i);
        }
        return answer;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 为数组 temperatures 的长度。

空间复杂度:O(n),其中 n 为数组 temperatures 的长度。注意这种写法栈中可以有重复元素。

解法2:单调栈-从右到左

单调栈中记录下一个更大元素的「候选项」。

代码:

// 单调栈-从右到左

class Solution
{
public:
    vector<int> dailyTemperatures(vector<int> &temperatures)
    {
        int n = temperatures.size();
        vector<int> ans(n);
        stack<int> st;
        for (int i = n - 1; i >= 0; i--)
        {
            int t = temperatures[i];
            // 当前温度大于等于之前的最大温度,小于等于当前温度的栈中温度全部全掉
            while (!st.empty() && t >= temperatures[st.top()])
                st.pop();
            if (!st.empty())
                ans[i] = st.top() - i;
            st.push(i);
        }
        return ans;
    }
};

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 为数组 temperatures 的长度。

空间复杂度:O(min(n,U)),其中 U=max⁡(temperatures)−min⁡(temperatures)+1。返回值不计入,仅考虑栈的最大空间消耗。

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

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

相关文章

深入理解指针03

1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针char*; ⼀般使⽤: int main(){char ch w;char *pc &ch;*pc w;return 0;} 还有⼀种使⽤⽅式如下: int main() {const char* pstr "hello world";//这⾥是把⼀个字符串放到pstr指针变量⾥了…

【Linux实践室】Linux用户管理实战指南:新建与删除用户操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux创建用户命令2.1.1 知识点讲解2.1.2 案…

OceanMind海睿思入选中国信通院《2023高质量数字化转型技术解决方案集》

近日&#xff0c;由中国信息通信研究院“铸基计划”编制的《2023高质量数字化转型技术解决方案集&#xff08;第一版&#xff09;》正式发布。 中新赛克海睿思 凭借卓越的产品力以及广泛的行业实践&#xff0c;成功入选该方案集的数据分析行业技术解决方案。 为促进数字化转型…

探索uni-app项目的架构与开发实践:快速开发的项目模板参考

摘要&#xff1a;本文将深入探讨uni-app项目架构的模板设计&#xff0c;以及如何通过使用该模板实现快速开发。我们将重点介绍模板中的组件示例、SDK示例和模板页面&#xff0c;并阐述它们在提高开发效率和优化用户体验方面的作用。 一、引言 随着移动互联网的迅猛发展&#…

每日一题 --- 209. 长度最小的子数组[力扣][Go]

长度最小子数组 题目&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子数组&#xff0c…

Learn OpenGL 19 几何着色器

几何着色器 在顶点和片段着色器之间有一个可选的几何着色器(Geometry Shader)&#xff0c;几何着色器的输入是一个图元&#xff08;如点或三角形&#xff09;的一组顶点。几何着色器可以在顶点发送到下一着色器阶段之前对它们随意变换。然而&#xff0c;几何着色器最有趣的地方…

4.KubeSphereV3.4-DevOps配置maven私服

1.修改方法 maven容器模板中用的是中央仓库打包&#xff0c;但是我们打包需要用到私服。那么我们需要将私服配置到容器settings.xml中。 以 admin账号登录 在配置字典里找到 ks-devops-agent 将MavenSetting中mirror标签里配上私服地址&#xff1a; <?xml version"…

印刷企业实施MES管理系统如何做好需求分析

在数字化、信息化的大潮中&#xff0c;印刷企业面临着转型升级的迫切需求。MES管理系统作为连接企业资源计划ERP和现场自动化系统的桥梁&#xff0c;对于提升印刷企业的生产效率、优化资源配置、提高产品质量具有重要意义。因此&#xff0c;做好MES管理系统的需求分析&#xff…

大模型 - 相关工程总结(待更新

文章目录 下图转自 公众号 AI工程化 推理执行引擎 server vLLM vLLM 部署 Qwen https://ezcode.blog.csdn.net/article/details/135947607 HF PipelineTGIDeepSpeed-MIITensorRT-LLM pc/edge ggmlollama https://ezcode.blog.csdn.net/article/details/136482825mlc-llm Web …

不启动BMIDE,Teamcenter如何查看property的real property name

问题描述&#xff1a; Teamcenter客户端&#xff0c;查看Item 属性&#xff0c;属性名称默认显示的是Display Name。 在各类开发过程中&#xff0c;对属性的操作&#xff0c;需要使用real property name才能进行。开发可能不在server端&#xff0c;没有安装BMIDE&#xff0c;如…

新手小白学剪辑视频的知识点,什么是视频分辨率和位深度?

新手小白需要了解的视频剪辑知识点&#xff0c;什么是视频分辨率尺寸(文件大小)和位深度&#xff1f; 分辨率尺寸/文件大小 常见的视频分辨率是高清和 4K。高清素材的屏幕像素&#xff08;宽度 x 高度&#xff09;测量值通常为 1920 x 1080&#xff0c;而 4K 素材是其四倍&am…

二叉树的层次遍历经典问题-算法通关村

二叉树的层次遍历经典问题-算法通关村 1 层次遍历简介 广度优先在面试里出现的频率非常高&#xff0c;整体属于简单题。广度优先又叫层次遍历&#xff0c;基本过程如下&#xff1a; 层次遍历就是从根节点开始&#xff0c;先访问根节点下面一层全部元素&#xff0c;再访问之后…

51单片机入门:定时器

定时器的介绍 定时器&#xff1a;51单片机的定时器属于单片机的内部资源&#xff0c;其电路的设计连接和运转均在单片机内部完成。根据单片机内部的时钟或者外部的脉冲信号对寄存器中的数据加1&#xff0c;定时器实质就是加1计数器。因为又可以定时又可以计数&#xff0c;又称…

禁欲28天!一宅男居然肝出如此详细Web安全学习笔记,学妹看完直接抽搐了!

1.1. Web技术演化 1.1.1. 简单网站 1.1.1.1. 静态页面 Web技术在最初阶段&#xff0c;网站的主要内容是静态的&#xff0c;大多站点托管在ISP上&#xff0c;由文字和图片组成&#xff0c;制作和表现形式也是以表格为主。当时的用户行为也非常简单&#xff0c;基本只是浏览网…

51单片机—直流电机

1.元件介绍 2.驱动电路 3.电机调速 一般会保证一个周期的时间是一样的 应用&#xff1a; 1.LED呼吸灯 #include <REGX52.H>sbit LEDP2^0;void Delay(unsigned int t) {while(t--); } void main() {unsigned char Time,i;while(1){for(Time0;Time<100;Time){for(i0;…

Linux相关命令(1)

1、找出文件夹下包含 “aaa” 同时不包含 “bbb”的文件&#xff0c;然后把他们重新生成一下。要求只能用一行命令。 find ./ -type f -name "*aaa*" ! -name "*bbb*" -exec touch {} \;文件系统操作命令 df&#xff1a;列出文件系统的整体磁盘使用情况 …

RocketMQ基础知识和常见问题

RocketMQ 是一个 队列模型 的消息中间件&#xff0c;具有高性能、高可靠、高实时、分布式 的特点。它是一个采用 Java 语言开发的分布式的消息系统&#xff0c;由阿里巴巴团队开发&#xff0c;在 2016 年底贡献给 Apache&#xff0c;成为了 Apache 的一个顶级项目。 在阿里内…

Linux 创建交换空间

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

明牌空投:Cosmos生态项目Joltify零撸教程

简介&#xff1a;Joltify Finance 是基于Cosmos SDK的Layer1公链&#xff0c;做RWA赛道的&#xff0c;它可以将加密世界中的大量流动性与现实世界的金融资产合并&#xff0c;将有形资产转换为代币或NFT的过程&#xff0c;使它们能够在链上进行交易&#xff0c;从而在DeFi和传统…

内存卡损坏怎么修复数据,内存卡损坏修复数据方法

内存卡损坏是许多用户都可能面临的问题。当我们的内存卡损坏时,其中存储的重要数据可能会受到威胁,承载着我们无尽回忆的数据,一旦失去,将成为大家心中永远的遗憾。因此我们迫切需要找到一种方法来修复这些数据。本文将介绍一些内存卡损坏修复数据方法,帮助大家解决因为内…
最新文章