力扣最热一百题——每日温度

Python后面的文章,内容都比较多,但是同时我又想保持每天更新的速度,所以Python的文章我继续打磨打磨,先更新一篇算法的文章。

一身正气报国家,旁无乱境不恋她

ヾ(◍°∇°◍)ノ゙


力扣题号:739. 每日温度 - 力扣(LeetCode)

下述题目描述和示例均来自力扣

题目描述

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例

示例 1:

输入:
temperatures
= [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]

示例 2:

输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]

示例 3:

输入: temperatures = [30,60,90]
输出: [1,1,0]

提示:

  • 1 <= temperatures.length <= 105
  • 30 <= temperatures[i] <= 100

上嘴脸!!!!

思路

Java解法一:直接暴力

这里直接两层for循环挨个找就行

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int length = temperatures.length;
        int[] answer = new int[length];
        for (int i = 0; i < length; i++) {
            int far = 1;
            for (int j = i + 1; j < length; j++) {
                if (temperatures[i] < temperatures[j]){
                    answer[i] = far;
                    break;
                }else {
                    far++;
                }
            }
        }
        return answer;
    }
}

但是不好意思,超时了

因为没过我就不提供另外的语法了

Java解法二:栈

这里我们可以采用一个栈,来记录之前的温度(记录的是低温),然后遍历数组,发现如果今天的温度大于栈顶存储的温度,则将今天温度的数组下标和栈顶的相减获得天数差值,然后存入answer数组即可。

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
    public int[] dailyTemperatures(int[] temperatures) {
        // 记录数组长度
        int length = temperatures.length;
        // 准备需要返回的数组
        int[] answer = new int[length];
        // 准备一个栈来存储
        Deque<Integer> stack = new LinkedList<>();

        for (int i = 0; i < length; i++) {
            // 获取每次的温度
            int temperature = temperatures[i];
            // 若栈不为空而且,当前温度大于栈顶的温度(这里会一直查找)弹出栈,获取下标差值
            while (!stack.isEmpty() && temperature > temperatures[stack.peek()]) {
                // 获取栈顶元素
                int preIndex = stack.pop();
                // 取得下标差值,写入answer数组
                answer[preIndex] = i - preIndex;
            }
            // 存入栈
            stack.push(i);
        }
        return answer;
    }
}

C++解法二:栈

class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& temperatures) {
        int length = temperatures.size();
        vector<int> answer(length);
        stack<int> stack;

        for(int i = 0; i < length; i++){
            int temperature = temperatures[i];
            while(!stack.empty() && temperature > temperatures[stack.top()]){
                int preIndex = stack.top();
                answer[preIndex] = i - preIndex;
                stack.pop();
            }
            stack.push(i);
        }
        return answer;
    }
};

对于C++比Java算法题跑的慢这个事情我已经习以为常了。

Python解法二:栈

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        length = len(temperatures)
        # python的列表初始化
        answer= [0] * length
        stack = []
        for i in range(length):
            temperature = temperatures[i]
            while stack and temperature > temperatures[stack[-1]]:
                prev_index = stack.pop()
                answer[prev_index] = i - prev_index
            stack.append(i)
        return answer

        

 果然是发展越来越好的语言,速度越来越快了奥!

结语

就这样

再见ヾ( ̄▽ ̄)Bye~Bye~

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

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

相关文章

大语言模型比武

今年随着 ChatGPT 的流行&#xff0c;并在各个领域有一定程度生产级别的应用。国内外也掀起了一股大语言模型浪潮&#xff0c;各大厂商都推出了自己的大语言模型&#xff0c;阿里推出了 通义千问&#xff0c;腾讯推出了 Hunyuan&#xff0c;亚马逊云推出了 Titan&#xff0c;大…

微服务-grpc-consul-protoBuf-micro

微服务 一、微服务&#xff08;microservices&#xff09; 近几年,微服这个词闯入了我们的视线范围。在百度与谷歌中随便搜一搜也有几千万条的结果。那么&#xff0c;什么是微服务 呢&#xff1f;微服务的概念是怎么产生的呢&#xff1f; 我们就来了解一下Go语言与微服务的千丝…

C++ 断言

1.断言的概念 断言(assertion)是一种编程中常用的手段。在通常情况下&#xff0c;断言就是将一个返回值总是需要为真的判别式放在语句中&#xff0c;用于排除在设计的逻辑上不应该产生的情况。比如一个函数总需要输人在一定的范围内的参数&#xff0c;那么程序员就可以对该参数…

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

1 数据对象的创建 CtrlH打开Model Explorer&#xff0c;在Base workspace中点击工具栏add&#xff0c;出现如下界面&#xff0c; 可以看到Simulink提供了多种数据类型 Matlab Variable&#xff1a;Simulink.Parameter&#xff1a;使用该数据对象表示工程应用中的标定量Simuli…

CSS 渐变、文本效果、字体

一、CSS3渐变&#xff1a; CSS3渐变&#xff08;gradient&#xff09;可以在两个或多个指定的颜色之间显示平稳的过渡。CSS3定义了两种类型的渐变&#xff08;gradient&#xff09;&#xff1a;线性渐变&#xff08;linear gradient&#xff09;-向下/向上/向左/向右/对角方向…

MySQL–第4关:查询用户日活数及支付金额

MySQL–第4关&#xff1a;查询用户日活数及支付金额 – WhiteNights Site 标签&#xff1a;MySQL 非常好的题&#xff0c;爱来自中国。 题目 没啥用 任务描述 现有3张业务表&#xff0c;详见如下: 需要输出结果如下&#xff0c;没有支付的日期不需要显示&#xff0c;请写出对…

设计模式——建造者模式

目录 建造者模式盖房项目需求基本介绍四个角色实例代码注意事项和细节抽象工厂模式 VS 建造者模式 建造者模式 盖房项目需求 传统方式&#xff1a;打地基&#xff0c;砌墙&#xff0c;封顶 盖房子步骤 public abstract class AbstractHouse {// 地基public abstract void b…

【小白专用】PHP中的JSON转换操作指南 23.11.06

一、JSON的基础知识 1.1JSON数据格式 JSON数据格式是一组键值对的集合&#xff0c;通过逗号分隔。键值对由“键”和“值”组成&#xff0c;中间使用冒号分隔。JSON数据格式可以嵌套&#xff0c;而且可以使用数组 二、PHP中的JSON函数 JSON的操作需要使用编程语言进行处理&am…

软考软件设计师刷题笔记整理

软件设计师 HTML代码中&#xff0c;创建指向邮箱地址的链接正确的是ARP攻击造成网络无法跨网段通信的原因是在软件开发过程中进行风险分析关于哈夫曼树的叙述关于风险管理的叙述ISO/IEC9126软件质量模型关于结构化开发方法的叙述分布式数据库中的分片透明、复制透明、位置透明和…

day61--单调栈2

503.下一个更大元素II 42. 接雨水 第一题&#xff1a;下一个更大元素2 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字之…

前端工程化(vue2)

一、环境准备 1.依赖环境&#xff1a;NodeJS 官网&#xff1a;Node.js 2.脚手架&#xff1a;Vue-cli 参考网址&#xff1a;安装 | Vue CLI 介绍&#xff1a;Vue-cli用于快速的生成一个Vue的项目模板。主要功能有&#xff1a;统一的目录结构&#xff0c;本地调试&#xff0…

小程序day04

目标 自定义组件 创建组件 引用组件 局部引用 全局引用 组件的函数定义到metods节点中&#xff0c;梦回vue2. 样式 数据&#xff0c;方法&#xff0c;属性 下划线开头的称为自定义方法&#xff0c;非下划线开头的都是事件处理函数。 神特么&#xff0c;this.datathis.pro…

一种ESDF地图实现方法:FIESTA

背景&#xff1a; 在机器人定位、行动规划中建图是一个很重要的工作&#xff0c;只有通过感知器感知到自己在哪、周围有什么&#xff1b;才能为下一步行动作出决策的依据。然而要知道自己在哪&#xff0c;就必须要有一个整体规划和参照也就是所谓的地图。地图相当于是一次规划…

c语言 结构体 简单实例

结构体 简单例子 要求&#xff1a; 结构体保存学生信息操作 代码 #include <stdio.h>//定义结构体 struct student{int ID;char name[20];char sex;char birthday[8];int grade; };int main(){int number;printf("请输入学生个数&#xff1a;");scanf(&quo…

java入门,记一次mysql函数使用

一、前言 记一次mysql函数使用&#xff0c;要求给一个字段进行拼接&#xff0c;然后MD5加密&#xff0c;再转换成大写。这里都是有现成的函数&#xff0c;所以记录下来 二、函数使用 1、拼接函数&#xff1a; concat(字符串1,字符串2) select concat(字符串1,字符串2); 2、…

【Linux】:git基本操作_添加文件_两种场景_查看.git文件 || git修改文件 || 版本回退

&#x1f3af;添加⽂件–场景⼀ &#x1f3af;在包含.git的⽬录下新建⼀个ReadMe⽂件&#xff0c;我们可以使⽤ git add 命令可以将⽂件添加到暂存区&#xff1a; • 添加⼀个或多个⽂件到暂存区&#xff1a; git add [file1] [file2] … • 添加指定⽬录到暂存区&#xff0c;…

Tomcat,jdk下载配置(发布项目)

Tomcat&#xff0c;jdk下载&#xff0c; 远程连接 启动以下服务 高级设置 允许别人连接进来 网上搜索jdk下载即可 双击下一步即可 下一步 输入java&#xff0c;看有没有安装成功 这是安装成功的 Tomcat就可以安装了 和以上操作一样&#xff0c;在网上下载安装包&#xff0c;…

11月9日星期四今日早报简报微语报早读

11月9日星期四&#xff0c;农历九月廿六&#xff0c;早报微语早读。 1、中国数字经济规模十年增至50.2万亿元&#xff0c;网民规模增至10.79亿&#xff1b; 2、世界互联网发展指数排名发布&#xff1a;中国位居第二&#xff1b; 3、中国—拉美开发性金融合作机制扩容&#x…

【Mysql】where 条件子句之逻辑运算符

逻辑运算符 and &&or ||not ! student表 一.查询分数在80 - 90之间 and写法 &&写法 区间&#xff08;between ....and......) 二.查询分数不为88 &#xff01;写法 not写法 三.查询分数大于88或者年龄小于22 满足其中一个条件即可 or写法 ||写法

CocosCreator3.8原生引擎源码研究

1. Cocos Creator引擎架构图 2. 原始引擎源码流程图 下图中包含Android native层引擎到js适配层的启动和主循环的启用流程和必要说明&#xff0c;本猿比较懒&#xff0c;暂时不细述了&#xff0c;各位看官直接看图吧&#xff0c;还在细化扩充&#xff0c;后续逐渐更新。。。 版…