}因為寫的十棧裡面的題目,所以剛開始在想用棧來寫的時候,是真的一點思路沒有。琢磨著各種可以取到高分的情況,發現那是一環扣著一環,每次決定都受之後分數序列的影響,既然如此,便想到用遞迴來寫(呸,看題解的)。說實話,遞迴這東西是真的巧妙啊,你不用去討論如何才能取最大,你只需要告訴計算機,我就是要去最大,然後它就莫名其妙給你解決了,真香。
}}雖然**長了點,但執行時間擊敗了百分之百的使用者,而且也沒有用什麼資料結構,只是用了不同的思維去解這道題,就很有意思的 一道題。
}}這種型別算是棧裡比較典型的題目了。需要注意的是整數並不只是個位的。
好吧,我是廢物,我沒寫出來,雖然最後想到了遞迴,但。。。!
看了題解中的方法,題目要求最終返回的字串必須包含所有出現過的字母,同時得讓字串的字典序最小。因此最終返回的字串,最左側的字元是在能保證其他字元至少能出現一次情況下的最小字元。(儘管方法已經介紹完了,但我還是沒想出來用遞迴怎麼寫)。
演算法:每次遞迴中,在保證其他字元至少出現一次的情況下,確定最小左側字元。之後再將未處理的字尾字串繼續遞迴。
public
class
solution
return s.
length()
==0?""
: s.
charat
(pos)
+removeduplicateletters
(s.substring
(pos +1)
.replaceall(""
+ s.
charat
(pos),""
));}
}
好菜啊,每日十題打卡第五天,以下圖為證。
LeetCode每日十題 棧(難度 中等)二
挺有意思的一道題目,上面是我的最初想法,很明顯時間超時了,待我再想想。好吧,我是廢物!大佬思路 我們首先考慮啊a i min j 如果不成立,那麼我們要跳過這個a j 否則我們將棧頂的元素依次出棧,直到棧頂元素stack top 滿足stack top min j 在這之後,我們可以確定棧中的所有元...
leetCode每日十題 棧(難度 中等)三
雖然是個基礎題,但寫出來還是略有成就感的,重在思考過程。剛開始是打算用兩個棧,乙個棧用來記錄括號,乙個用來記錄分數,但最後發現,兩個棧向互受到牽制,所以必須合成乙個棧,考慮到分數是整數,符號是字元型,要想合成乙個棧,則可考慮將符號用特殊數字代替,顯然這裡的分數都是正的,所以用 1來表示左括號。遍歷字...
leetCode每日十題 堆(難度 中等)
這是我最初的想法,時間超時了,當然很容易想到另一種方法。後面的數是前面某乙個數的2,3,5倍。因為之前沒用過堆,這裡就當堆入門了,直接學習題解的方法。演算法 預計算1690個醜數 初始化預計算用到的陣列nums,堆heap和雜湊表seen跟蹤在堆 現過的元素,避免重複。迴圈計算醜數 彈出堆中最小的數...