739. Daily Temperatures(week7)

739. Daily Temperatures

題目描述

Given a list of daily temperatures T, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.

For example, given the list of temperatures T = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0].

Note: The length of temperatures will be in the range [1, 30000]. Each temperature will be an integer in the range [30, 100].

解題思路

簡單的說,這道題需要我們找到某個(gè)數(shù)組元素后面的最早出現(xiàn)的元素。簡單的思路就是:從這個(gè)點(diǎn)出發(fā)鹏浅,找后面的所有點(diǎn)桨啃,是否有比它還要大的元素;如果出現(xiàn)了惠奸,就記錄下二者下標(biāo)的差值;若沒有,則記錄下0私痹。這是一種可取的思路,假設(shè)平均在后面的第k個(gè)點(diǎn)才找到符合要求的值统刮,那么這個(gè)算法的復(fù)雜度將會(huì)是O(N * K)紊遵。k的大小取決于數(shù)據(jù),如果這是一個(gè)從大到小排列的序列侥蒙,那么K = n/2暗膜。復(fù)雜度將會(huì)是O(n^2)的規(guī)模。而題目給出的數(shù)組大小會(huì)達(dá)到30000鞭衩,很顯然学搜,這種方法是不可取的。

在上述的方法中论衍,對(duì)每一個(gè)點(diǎn)瑞佩,我們都遍歷了太多不符合要求的點(diǎn)。最好的情況是坯台,對(duì)于每一個(gè)點(diǎn)炬丸,我們只需要知道它自己的值以及第一個(gè)符合要求的值即可,那么我們要如何實(shí)現(xiàn)呢捂人?考慮用一個(gè)棧結(jié)構(gòu)來存儲(chǔ)這個(gè)列表御雕。對(duì)于每一個(gè)元素矢沿,我們在進(jìn)棧之前,先判斷棧頂元素是否比它要小酸纲,若比它要小捣鲸,則棧頂元素最早出現(xiàn)的比它自身大的元素就是當(dāng)前的元素,出棧并繼續(xù)判斷闽坡;若棧頂元素不比它小栽惶,則進(jìn)棧。這樣一來疾嗅,每一個(gè)元素我們最多只會(huì)對(duì)它進(jìn)行一次入棧和出棧的操作外厂,這樣一來,復(fù)雜度就會(huì)由O(N * K)下降到O(2n)代承。而付出的代價(jià)是汁蝶,多維護(hù)了一個(gè)棧空間论悴。

時(shí)間復(fù)雜度分析

對(duì)于每一個(gè)元素而言掖棉,最多只進(jìn)行一次入棧和出棧的操作,復(fù)雜度為O(n)膀估。

空間復(fù)雜度分析

能夠存下n個(gè)元素的棧以及返回的結(jié)果幔亥,復(fù)雜度為O(n)。

源碼

class Solution {
public:
  vector<int> dailyTemperatures(vector<int>& T) {
    stack<int> Tstack;
    map<int, int> next;
    for (int i = 0; i < T.size(); ++i) {
      if (Tstack.empty()) {
        Tstack.push(i);
      } else {
        while (!Tstack.empty()) {
          int topIndex = Tstack.top();
          if (T[i] > T[topIndex]) {
            Tstack.pop();
            next[topIndex] = i - topIndex;
          } else {
            break;
          }
        }
        Tstack.push(i);
      }
    }
    while (!Tstack.empty()) {
      next[Tstack.top()] = 0;
      Tstack.pop();
    }
    vector<int> result;
    for (int i = 0; i < T.size(); ++i) {
      result.push_back(next[i]);
    }
    return result;
  }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末察纯,一起剝皮案震驚了整個(gè)濱河市帕棉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饼记,老刑警劉巖香伴,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異握恳,居然都是意外死亡瞒窒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門乡洼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崇裁,“玉大人,你說我怎么就攤上這事束昵“挝龋” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵锹雏,是天一觀的道長巴比。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么轻绞? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任采记,我火速辦了婚禮,結(jié)果婚禮上政勃,老公的妹妹穿的比我還像新娘唧龄。我一直安慰自己,他們只是感情好奸远,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布既棺。 她就那樣靜靜地躺著,像睡著了一般懒叛。 火紅的嫁衣襯著肌膚如雪丸冕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天薛窥,我揣著相機(jī)與錄音胖烛,去河邊找鬼。 笑死诅迷,一個(gè)胖子當(dāng)著我的面吹牛洪己,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竟贯,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逝钥!你這毒婦竟也來了屑那?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤艘款,失蹤者是張志新(化名)和其女友劉穎持际,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哗咆,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜘欲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晌柬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姥份。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖年碘,靈堂內(nèi)的尸體忽然破棺而出澈歉,到底是詐尸還是另有隱情,我是刑警寧澤屿衅,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布埃难,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏涡尘。R本人自食惡果不足惜忍弛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望考抄。 院中可真熱鬧细疚,春花似錦、人聲如沸座泳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挑势。三九已至镇防,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間潮饱,已是汗流浹背来氧。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留香拉,地道東北人啦扬。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像凫碌,于是被迫代替她去往敵國和親扑毡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 不知道這輩子能不能過了你的坎了 分開一年了 每當(dāng)要答應(yīng)他人的追求時(shí) 滿腦子想的卻是你 我們的過往 你離開我的樣子 ...
    長的像狐貍的貓妹妹閱讀 249評(píng)論 0 1
  • 前兩天看了電影《海邊的曼徹斯特》盛险,情節(jié)的敘述有點(diǎn)平淡瞄摊,講了個(gè)不幸的故事。在數(shù)年前的一個(gè)夜里苦掘,Lee因出門前忘記蓋上...
    Xcer閱讀 1,021評(píng)論 0 0
  • 盒馬生鮮的新零售要賣絲襪换帜,小米之家的新零售要線上線下同價(jià),無人超市一夜間遍布全國鹤啡,新零售正成為中國商界最熱門的概念...
    心源之園閱讀 894評(píng)論 0 1
  • 朋友一年前就想拉我進(jìn)他們的公司惯驼,當(dāng)時(shí)我以不是學(xué)醫(yī)的為理由拒絕了,后天又找了我?guī)状蔚莨澹蚁肓讼胨钌J(rèn)識(shí)更多的事物也不是壞...
    高華慶閱讀 280評(píng)論 0 2