LeetCode 739 每日溫度(棧)

2021-10-04 10:21:38 字數 1445 閱讀 4712

leetcode 739:每日溫度(棧)

根據每日 氣溫 列表,請重新生成乙個列表,對應位置的輸出是需要再等待多久溫度才會公升高超過該日的天數。如果之後都不會公升高,請在該位置用 0 來代替。

例如,給定乙個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應該是 [1, 1, 4, 2, 1, 1, 0, 0]。

思路:棧(唉,看完彷彿自己是個弱智)

當遇到比棧頂元素大的值,就去計算棧頂元素的答案(索引差),然後出棧,大值入棧,直到所有元素遍歷完畢。

所有元素進出棧一次即可

vector<

int>

dailytemperatures

(vector<

int>

& temperatures)

st.push

(i);

}return res;

}

自己的再版(30% 5%)
vector<

int>

dailytemperatures

(vector<

int>

& t)

; vector<

int>

res(t.

size()

,0);

for(

int i = t.

size()

-2;i>=

0;i--)if

(j==t.

size()

) res[i]=0

;else

if(t[j]

>t[i]

) res[i]

= j-i;

else

if(t[j]

==t[i]

) res[i]

= res[j]==0

?0:res[j]

+j-i;

}return res;

}

自己的初版(30% 5%)

從後置位開始盤…

vector<

int>

dailytemperatures

(vector<

int>

& t)

; vector<

int>

res(t.

size()

,0);

for(

int i = t.

size()

-2;i>=

0;i--

)else

if(j==t.

size()

) res[i]=0

;else

else res[i]

=j-i;}}

}return res;

}

LeetCode 739 每日溫度

根據每日 氣溫 列表,請重新生成乙個列表,對應位置的輸入是你需要再等待多久溫度才會公升高的天數。如果之後都不會公升高,請輸入 0 來代替。例如,給定乙個列表 temperatures 73,74,75,71,69,72,76,73 你的輸出應該是 1,1,4,2,1,1,0,0 static con...

LeetCode 739 每日溫度

根據每日 氣溫 列表,請重新生成乙個列表,對應位置的輸入是你需要再等待多久溫度才會公升高的天數。如果之後都不會公升高,請輸入 0 來代替。例如,給定乙個列表 temperatures 73,74,75,71,69,72,76,73 你的輸出應該是 1,1,4,2,1,1,0,0 從後一天往前一天推,...

leetcode739 每日溫度

即找之後第乙個比自己大的元素 參考 用棧實現 將元素 下標 依次入棧並且保證棧內元素從棧頂到棧底是遞增的。如果當前元素比棧頂元素大,則說明當前元素就是比棧頂元素大的第乙個元素,求出兩個下標的差值即為棧頂元素對應的結果。依次出棧並計算下標差直到棧頂元素大於當前元素,將當前元素入棧 比如 t 73,74...