日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

496. 下一个更大元素 I/503. 下一个更大元素 II/739. 每日温度

發(fā)布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 496. 下一个更大元素 I/503. 下一个更大元素 II/739. 每日温度 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2020-05-10

1.題目描述

下一個更大元素

2.題解

1.直接進(jìn)行暴力搜索 2.既然題目的標(biāo)簽是棧,就應(yīng)該用到棧先進(jìn)后出的特性,參考了官方的題解之后,我認(rèn)為最能體現(xiàn)這種 特性的就是要找到下一個比當(dāng)前元素值大的值。

3.代碼

class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {int l1=nums1.size(),l2=nums2.size();vector<int> res;for (int i=0;i<l1;i++){int r=0;for (int j=l2-1;j>=0;j--){if (nums2[j]>nums1[i]){r=j;}if (nums2[j]==nums1[i]){if (r==0) res.push_back(-1);else res.push_back(nums2[r]);}}}return res;} }; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {int l1=nums1.size(),l2=nums2.size();map<int,int>mymap;stack<int>mystack;vector<int>myvector;if (l2==0) return myvector; // 如果當(dāng)前num2數(shù)組為空的話mystack.push(nums2[0]);for (int i=1;i<l2;i++){while (!mystack.empty()&&nums2[i]>mystack.top()){ // 棧不為空且當(dāng)前元素大于棧頂元素mymap[mystack.top()]=nums2[i];mystack.pop();}mystack.push(nums2[i]);}while(!mystack.empty()){ // 如何棧中還有元素的話mymap[mystack.top()]=-1;mystack.pop();}for (int i=0;i<l1;i++){myvector.push_back(mymap[nums1[i]]);}return myvector;} };

503

和I的區(qū)別就是數(shù)組是循環(huán)數(shù)組,為了解決這一問題,我把nums數(shù)組復(fù)制兩遍到nums2數(shù)組里面。 class Solution { public:vector<int> nextGreaterElements(vector<int>& nums) {int l=nums.size();vector<int> res;if (l==0) return res; // 如果nums數(shù)組為空vector<int> nums2;for (int i=0;i<l;i++) nums2.push_back(nums[i]);for (int i=0;i<l;i++) nums2.push_back(nums[i]); // 循環(huán)數(shù)組map<int,int> mymap;stack<int> mystack;for (int i=0;i<2*l;i++){while(!mystack.empty()&&nums2[mystack.top()]<nums2[i]){mymap[mystack.top()]=i;mystack.pop();}mystack.push(i);}while(!mystack.empty()){mymap[mystack.top()]=-1;mystack.pop();}for (int i=0;i<l;i++) {if (mymap[i]!=-1) res.push_back(nums2[mymap[i]]);else res.push_back(-1);}return res;} };

739

按照題目意思找到下一個比當(dāng)前元素大的即可 class Solution { public:vector<int> dailyTemperatures(vector<int>& T) {int l=T.size();map<int,int>mymap;stack<int>mystack;vector<int>myvector;if (l==0) return myvector; // 如果當(dāng)前數(shù)組為空的話for (int i=0;i<l;i++){while (!mystack.empty()&&T[i]>T[mystack.top()]){ // 棧不為空且當(dāng)前元素大于棧頂mymap[mystack.top()]=i-mystack.top();mystack.pop();}mystack.push(i);}while(!mystack.empty()){ // 如何棧中還有元素的話mymap[mystack.top()]=0;mystack.pop();}for (int i=0;i<l;i++){myvector.push_back(mymap[i]);}return myvector;} };

總結(jié)

以上是生活随笔為你收集整理的496. 下一个更大元素 I/503. 下一个更大元素 II/739. 每日温度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。