leetcode739. 每日温度
生活随笔
收集整理的這篇文章主要介紹了
leetcode739. 每日温度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:題目
二:上碼
// class Solution { // public: // vector<int> dailyTemperatures(vector<int>& temperatures) { // vector<int> ans(temperatures.size(),0);// for (int i = 0; i < temperatures.size(); i++) {// int count = 1; // int flag = 0;// for (int j = i+1; j <temperatures.size(); j++) {// if (temperatures[j] > temperatures[i]) { // flag = 1; // break; // } else { // count++; // } // } // if(flag == 1) ans[i] = count; // else ans[i] = 0; // } // return ans; // } // };class Solution { public:/**思路:1.本題用到單調棧,那么我們來分析一下單調棧;2.何時用到單調棧當我們要求左邊還是右邊第一個比其大或者小的元素的位置的時候3.怎么用?1>:棧當中存的元素存的是元素的下標2>:確定何種單調我們從棧頂到棧底的順序來確定單調性那么本題來說的話 我們是要求出右邊第一個比起大的元素位置 那么我們就需要是 單調遞增的 當出現元素比其棧頂元素的大的時候 我們就要彈出棧頂元素這時候我們就可以記錄了 右邊第一個比其大的元素了。 ans[st.top()] = i - st.top();//因為我們是要求的是右邊第一個比其大的元素距其相差幾個位置*/vector<int> dailyTemperatures(vector<int>& temperatures) {if(temperatures.size() == 0) return {0};stack<int> st;vector<int> ans(temperatures.size(),0);st.push(0);for (int i = 1; i < temperatures.size(); i++) {while (!st.empty() && temperatures[i] > temperatures[st.top()]) {//大于棧頂元素的話 //那么就需要彈出了ans[st.top()] = i - st.top();//這時就可以記錄我們比棧頂元素大的話 其是相差多少個st.pop();} st.push(i); }return ans;} };總結
以上是生活随笔為你收集整理的leetcode739. 每日温度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode115. 不同的子序列
- 下一篇: leetcode503. 下一个更大元素