首页 > 编程语言 >代码随想训练营第58天(Python)| 739. 每日温度、496.下一个更大元素 I

代码随想训练营第58天(Python)| 739. 每日温度、496.下一个更大元素 I

时间:2023-12-07 15:22:22浏览次数:35  
标签:58 Python ans2 List len int 739 stack nums2

739. 每日温度

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        n = len(temperatures)
        ans = [0] * n
        # 单调增的栈
        stack = []
        for i in range(n):
          # 如果遍历的 temperatures[i] 比栈顶元素小,则先入栈
          while len(stack) > 0 and temperatures[i] > temperatures[stack[-1]]:
            ans[stack[-1]] = i - stack[-1]
            stack.pop()
          stack.append(i)
        return ans

496.下一个更大元素 I
方法一:
通过单调栈列出 nums2 每个元素更大元素的值

class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        n = len(nums2)
        ans2 = [0] * n
        stack = []
        for i in range(len(nums2)):
            while len(stack) > 0 and nums2[i] > nums2[stack[-1]]:
                ans2[stack[-1]] = i
                stack.pop()
            stack.append(i)

        ans1 = [-1] * len(nums1)
        for i, num in enumerate(nums1):
            ans2_index = nums2.index(num)
            if ans2[ans2_index] == 0:
                ans1[i] = -1
            else:
                ans1[i] = nums2[ans2[ans2_index]]
        return ans1

简洁版

class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        n = len(nums1)
        res = [-1] * n
        stack = []
        for i in range(len(nums2)):
            while len(stack) > 0 and nums2[i] > nums2[stack[-1]]:
              if nums2[stack[-1]] in nums1:
                num1_index = nums1.index(nums2[stack[-1]])
                res[num1_index] = nums2[i]
              stack.pop()
            stack.append(i)
        return res

标签:58,Python,ans2,List,len,int,739,stack,nums2
From: https://www.cnblogs.com/yixff/p/17881942.html

相关文章

  • 聪明办法学python——debug
    聪明办法学python——Debug调试理论简单介绍看懂报错信息利用print方法调试程序利用assert方法调试程序利用ide调试程序杂谈:利用AI来协助Debug调试理论开始之前,记住机器永远是对的,bug可能就在你想不到的地方软件的两层含义:人类需求在信息世界的投影和计算......
  • Python中级之文件操作
    文件操作【一】基本用法在Python中,文件处理是常见的任务之一。以下是一些基本的文件处理操作和对应的Python语法:打开文件:使用open()函数来打开一个文件,可以指定文件名、打开模式和字符编码(可选)。#打开文件(只读模式)file=open('example.txt','r',encoding='utf-8')......
  • [转]python 随机生成一个请求User-Agent
    前言全局说明爬虫程序的第一部分通常都是导入我们爬虫所需要的库。为了安全,我通常都是使用fake_useragent库随机生成一个请求头User-Agent。一、安装模块pip3installfake_useragent二、模块使用#导入fake_useragent库中的UserAgent类fromfake_useragentimportUser......
  • 用Python写的一个采集快手直播间的程序
    今天给大家分享的是一个用python写的一个采集快手直播间的程序,内容非常简单,并且每个代码都有详细的中文解释,让我们一起来学习一下吧。```pythonimportrequestsfrombs4importBeautifulSoup#设置代理信息proxy_host="https://www.duoip.cn/get_proxy"proxy_port=8000......
  • Python requests 模块 get请求和post请求
    前言全局说明requests模块get请求和post请求一、get请求importrequestsurl="https://www.baidu.com"my_headers={ "User-Agent":"Mozilla/5.0", "Referer":"http://baiud.com"}res=requests.get(url)print(res.status_......
  • Python 操作 MySQL 数据库
    Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。Python数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFlymSQLMySQLPostgreSQLMicrosoftSQLServer2000InformixInterbaseOracleSybase你可以访问Python数据库接口及API......
  • 【Lidar】基于Python的三维点云数据转二维平面+散点图绘制
    ​    最近一直在搞点云相关的操作,有时候在处理点云数据时需要查看处理后的数据是否满足需求,所以就想着写一套展示点云的代码。之前已经分享过如何可视化点云了,感兴趣的可以自己去看下:【Lidar】基于Python的Open3D库可视化点云数据。但是这个是3维展示,不满足我的项目需......
  • Python制作排班小工具【四】
    一、前言前面我们已经编写好生成排班的所有代码,在PyCharm中能正常运行,可是未安装Python环境的同事无法运行,本文就来介绍如何将Python文件打包成Windows可运行的exe文件。二、打包成exe项目结构很简单,只有两个Py文件加一张GUI图标:Step1:1.在Python项目虚拟环境和系统环境安装pyinstal......
  • Educational Codeforces Round 158 (Rated for Div. 2)
    Preface补题,妈的现在EduE都做不来这搞毛啊A.LineTrip签到#include<cstdio>#include<iostream>#include<utility>#include<vector>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>#include<queue&......
  • python __new__ __init__
    classStudent():def__new__(cls,*args,**kwargs):##创建类的实例print('__new__')returnobject.__new__(cls)##此处返回才会调用__init__def__init__(self):##初始化类的实例print('__init__')classNewInt(int):def__new_......