【Day62】代碼隨想錄之單調棧_739. 每日溫度_496.下一個更大元素 I

文章目錄

      • 1. 739. 每日溫度
      • 2. 496.下一個更大元素 I

1. 739. 每日溫度

參考文檔:代碼隨想錄

分析:
找下一個更高溫度出現在幾天后,即當前位置右側出現的一個比它更大的值,如果是暴力搜索,兩層for,時間復雜度O(n2), 數據范圍105,時間最大是1010,這可能會超,我試了試,確實超了,用一個很大的全都一樣的數組就超了。

單調棧是棧里是數組的下標,下標對應的數組元素是有序的。這里使用從棧頂到棧底遞增的方法:這樣遇到比棧頂更大的就可以根據下標求出距離了。遇到的元素和棧頂的元素會有三種情況:
棧頂元素大于遍歷元素:入棧保留。
棧頂元素等于遍歷元素:入棧保留。
棧頂元素小于遍歷元素:彈出棧頂,下標相減再減一求出距離。根據棧里的單調,當前遍歷元素和棧頂一直抵消,直到棧頂元素大于遍歷元素。

代碼:

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {vector<int> answer(temperatures.size(), 0);stack<int> st;//遞增棧,存放的是下標st.push(0);for(int i = 1; i < temperatures.size(); i++){if(temperatures[i] < temperatures[st.top()]){//小于棧頂st.push(i);}else if(temperatures[i] == temperatures[st.top()]){st.push(i);}else{while(!st.empty() && temperatures[i] > temperatures[st.top()]){answer[st.top()] = i - st.top();st.pop();}st.push(i);}        }if(!st.empty()){answer[st.top()] = 0;st.pop();}return answer;}
};

2. 496.下一個更大元素 I

參考文檔:代碼隨想錄

分析:
和溫度一樣要找出右側第一個比當前元素大的值,但是在找的時候需要查詢當前元素在nums1中在不在,在的話保存值,而不是距離。因為用到查詢是不是在nums1中存在,unordered_map<int, int>哈希表的底層邏輯查找效率是O(1),保存nums1中的數組下標和數組元素。

代碼:

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {stack<int> st;vector<int> answer(nums1.size(), -1);if(nums1.size() == 0) return answer;unordered_map<int, int> umap;for(int i = 0; i < nums1.size(); i++){umap[nums1[i]] = i;//保存值和下標,下標用來更新result}st.push(0);for(int i = 1; i < nums2.size(); i++){if(nums2[i] < nums2[st.top()]){st.push(i);}else if(nums2[i] == nums2[st.top()]){st.push(i);}else{while(!st.empty() && nums2[i] > nums2[st.top()]){if(umap.count(nums2[st.top()]) > 0) answer[umap[nums2[st.top()]]] = nums2[i];st.pop();}st.push(i);}}return answer;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711202.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711202.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711202.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于JAVA的畢業設計分配選題系統 開源項目

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 專業檔案模塊2.2 學生選題模塊2.3 教師放題模塊2.4 選題審核模塊 三、系統展示四、核心代碼4.1 查詢專業4.2 新增專業4.3 選擇課題4.4 取消選擇課題4.5 審核課題 五、免責說明 一、摘要 1.1 項目介紹 基于JAVAVueSpri…

vmware虛擬機centos中/dev/cl_server8/root 空間不夠

在使用vmware時發現自己的虛擬機的/dev/cl_server8/root空間不夠了&#xff0c;沒辦法安裝新的服務。所以查了一下改空間的辦法。 1.在虛擬機關閉的狀態下&#xff0c;選中需要擴容的虛擬機->設置->硬件-> 硬盤->擴展->填寫擴大到的值。 2.打開虛擬機&#xff…

jxls——自定義命令設置動態行高

文章目錄 前言依賴引入繪制 jxls 批注的 excel 模板測試類編寫自定義命令關于自動換行 前言 之前的博客中都簡單說了數據的渲染和導出excel文件。包括固定的 表頭結構&#xff0c;以及動態 表頭和表數據等方式。 本篇博客主要說明自定義命令的方式&#xff0c;控制輸出excel文…

Unity AssetBundle詳解,加載本地包、加載網絡包代碼全分享

在Unity中,AssetBundle(簡稱AB包)是一種將多個文件或資源打包到一個文件中的方式,用于優化資源的加載和管理。使用AB包,可以按需加載資源,減少應用的初始加載時間,并可以實現熱更新等功能。下面是一個基本的流程,展示如何在Unity中加載AB包并顯示其中的資源。 步驟1:…

springboot 實現本地文件存儲

springboot 實現本地文件存儲 實現過程 上傳文件保存文件&#xff08;本地磁盤&#xff09;返回文件HTTP訪問服務器路徑給前端&#xff0c;進行效果展示 存儲 服務端接收上傳的目的是提供文件的訪問服務&#xff0c;對于SpringBoot而言&#xff0c;其對靜態資源訪問提供了很…

H3C防火墻安全授權導入

一、防火墻授權概述 前面我們已經了解了一些防火墻的基本概念&#xff0c;有講過防火墻除了一些基本功能&#xff0c;還有一些高級安全防護&#xff0c;但是這些功能需要另外獨立授權&#xff0c;不影響基本使用。這里以H3C防火墻為例進行大概了解下。 正常情況下&#xff0c;防…

深度學習_15_過擬合欠擬合

過擬合和欠擬合 過擬合和欠擬合是訓練模型中常會發生的事&#xff0c;如所要識別手勢過于復雜&#xff0c;如五角星手勢&#xff0c;那就需要更改高級更復雜的模型去訓練&#xff0c;若用比較簡單模型去訓練&#xff0c;就會導致模型未能抓住手勢的全部特征&#xff0c;那簡單…

[云原生] K8s之pod進階

一、pod的狀態說明 &#xff08;1&#xff09;Pod 一直處于Pending狀態 Pending狀態意味著Pod的YAML文件已經提交給Kubernetes&#xff0c;API對象已經被創建并保存在Etcd當中。但是&#xff0c;這個Pod里有些容器因為某種原因而不能被順利創建。比如&#xff0c;調度不成功(…

原神搶碼,米游社搶碼-首發

本文章僅供學習使用-侵權請聯系刪除_2023年3月14日08:17:06 本來在深淵12層打不過的我偶然在刷到了一個dy的直播間&#xff0c;看到主播在搶碼上號幫忙打深淵還號稱痛苦號打不滿不送原石的旗號我就決定掃碼試試&#xff0c;在直播間內使用了兩部手機互相掃碼在掃了一下午的碼后…

自動駕駛技術詳解

&#x1f3ac;個人簡介&#xff1a;一個全棧工程師的升級之路&#xff01; &#x1f4cb;個人專欄&#xff1a;自動駕駛技術 &#x1f380;CSDN主頁 發狂的小花 &#x1f304;人生秘訣&#xff1a;學習的本質就是極致重復! 目錄 一 自動駕駛視覺感知算法 1目標檢測 1.1 兩階…

代碼隨想錄算法訓練營第四五天 | dp[j] = min(dp[j], dp[j - coins[i]] + 1)

目錄 爬樓梯 &#xff08;進階&#xff09;零錢兌換完全平方數總結 LeetCode 70. 爬樓梯 &#xff08;進階&#xff09; LeetCode 322. 零錢兌換 LeetCode 279.完全平方數 爬樓梯 &#xff08;進階&#xff09; 好做 import java.util.*;public class Main{// dp[i] 爬到有…

css背景圖片屬性

基礎代碼&#xff1a; div {width: 200px;height: 200px;background: url(./css-logo.png); }<div></div> 1、background-repeat&#xff1a;默認是repeat 設置背景圖片在容器內是否平鋪。 background-repeat: repeat-y; background-repeat: repeat-x; background…

消息中間件之RocketMQ源碼分析(二十四)

事務消息 事務消息機制。 事務消息的發送和處理總結為四個過程: 1.生產者發送事務消息和執行本地事務 2.Broker存儲事務消息 3.Broker回查事務消息 4.Broker提交或回滾事務消息 生產者發送事務消息和執行本地事務。 發送過程分為兩個階段: 第一階段,發送事務消息 第二階段,發…

Spring Expression Language (SpEL)

Spring 表達語言&#xff08;SpEL&#xff09;&#xff0c;支持在運行時查詢和操作對象圖&#xff0c;可以用于數據綁定、屬性訪問、方法調用等。使用SpEL可以簡化代碼并提高應用程序的可維護性。 1 概覽 SpelExpressionParser是SpEL的一個核心組件&#xff0c;負責解析和編譯…

CentOS安裝編譯Python3.11.6

CentOs自帶python2版本太低&#xff0c;項目需要python3&#xff0c;于是自己安裝python 操作指南&#xff1a; 重新下載源代碼&#xff1a; # 刪除舊的 Python 源代碼文件&#xff08;如果有&#xff09; rm -rf Python-3.11.6.tar.xz # 下載 Python 3.11.6 的源代碼文件 wget…

Java泛型簡介

Java泛型簡介 Java泛型是在Java 5中引入的一個特性&#xff0c;它允許程序員在編譯時指定類、接口或方法能夠接受的類型。泛型的主要目的是提供編譯時類型安全檢查&#xff0c;避免在運行時因為類型轉換錯誤而導致的ClassCastException。 在沒有泛型之前&#xff0c;Java中的集…

如何利用動態靜態代理IP實現跨地域網絡營銷與市場研究

動態代理IP和靜態代理IP都可以在跨地域網絡營銷與市場研究中發揮關鍵作用&#xff0c;具體實現方式如下&#xff1a; ### 動態代理IP的應用&#xff1a; 1. 跨地域營銷活動測試&#xff1a; - 在進行網絡營銷時&#xff0c;尤其是要驗證廣告投放、SEO效果或A/B測試不同地區用戶…

Ubuntu系統使用Docker搭建Jupyter Notebook并實現無公網ip遠程連接

文章目錄 1. 選擇與拉取鏡像2. 創建容器3. 訪問Jupyter工作臺4. 遠程訪問Jupyter工作臺4.1 內網穿透工具安裝4.2 創建遠程連接公網地址4.3 使用固定二級子域名地址遠程訪問 本文主要介紹如何在Ubuntu系統中使用Docker本地部署Jupyter Notebook&#xff0c;并結合cpolar內網穿透…

C語言系列(所需基礎:大學C語言及格)-4-轉義字符/注釋/選擇語句

文章目錄 一、轉義字符二、注釋三、選擇語句 一、轉義字符 加上\會講原來的字符改變意思&#xff0c;即進行轉義 例如\t會使t變成\t用于表示轉義字符&#xff0c;使得t轉義成水平制表符 其他轉義字符&#xff1a; 三字母詞&#xff08;展示\&#xff1f;的用處&#xff09;…

C#面:接口是一種引用類型,不可以聲明公有的域或私有的成員變量,但是可以聲明什么呢?

可以聲明&#xff1a;方法&#xff0c;屬性&#xff0c;索引器&#xff0c;事件。 接口的主要作用是定義一套規范&#xff0c;使得不同的類可以按照相同的規范進行交互。通過實現接口&#xff0c;類可以具備多態性&#xff0c;即可以以接口類型來引用對象&#xff0c;并調用接…