剛開始做leetcode上的題弄跌,可以輸出正確結(jié)果甲喝,但總是超時,怎么解決铛只?https://www.zhihu.com/question/34912389
很多時候埠胖,Leetcode上的題都有一個簡單直觀的解題思路,比如這道題(121. Best Time to Buy and Sell Stock淳玩,買賣股票的最佳時機)
題目是:給出一個數(shù)組表示每日股價直撤,要求找出買入和賣出最好的時機,使得利潤最大蜕着,輸出最大利潤谋竖。必須先低價買,再高價賣承匣,找最大收益蓖乘。
比如:Input: [7, 1, 5, 3, 6, 4]
Output: 5
最大利潤為在Input[1]=1時買入,在Input[4]=6時賣出韧骗。
常見想法是:先選擇所有數(shù)中最大和最小的嘉抒,然后判斷是否可行,如果不可行就嘗試次大和次小的數(shù)字袍暴,算法時間復(fù)雜度為O(N^2)
如果學(xué)過算法導(dǎo)論些侍,利用動態(tài)規(guī)劃,每次讀一個數(shù)據(jù)政模,刷新最低值和最大利潤岗宣。時間復(fù)雜度是O(N),空間復(fù)雜度是O(0)
寫代碼本身是很容易的事情淋样。Leetcode上更多的是挑戰(zhàn)優(yōu)化的極限耗式。我的Leetcode是https://leetcode.com/xiaoxiaoyao/,歡迎一起學(xué)習(xí)