計(jì)劃:
每天5道題
看公開課視頻2hours
鍛煉一小時(shí)
每天寫刷題日記
即日奏效。
2017.12.29
1.? two sum 給一串?dāng)?shù)字,返回滿足一個(gè)sum的兩個(gè)數(shù)字的index
思路:用map,看到一個(gè)數(shù)字,先查map中有沒這數(shù)字,沒有的話把sum-這個(gè)數(shù)字的數(shù)存到map中
15. 3Sum 給一串?dāng)?shù)字,要找三個(gè)數(shù)字加起來=0,返回滿足條件的solution set
思路:先sort,設(shè)置一個(gè)low指針和一個(gè)high指針,for loop遍歷數(shù)列,每個(gè)數(shù)字的相反數(shù)就是我們要找的另外兩個(gè)數(shù)字。?如果low+high比這個(gè)數(shù)字小,low++,比數(shù)字大,high-,如果等于,放到list中,low++, high- -。
20.?Valid Parentheses? 檢查一個(gè)由【】{}()組成的string是不是valid的
思路:用stack,每次如果看到【{(, push進(jìn)去}】),直到?jīng)]有左包圍,檢查pop出去的是不是等于string剩下的。
53.Maximum Subarray? ?一串?dāng)?shù)字中return連續(xù)數(shù)字的最大和
DP!再加一個(gè)int的array,存儲(chǔ)每到這個(gè)index之前,最大的和。每次算這個(gè)array的next element,如果原array這個(gè)位置的數(shù)字大于0,說明加上會(huì)讓整體更大,dp【i】等于加上這個(gè)數(shù)字。如果小于0,則這個(gè)dp的當(dāng)前index的得數(shù)=dp[i-1]+0
121.?Best Time to Buy and Sell Stock? ?一串?dāng)?shù)字,求之后的和之前的差最大是多少(profit)
一個(gè)for loop,?keep兩個(gè)變量,minPrice 和 maxProfit。每次發(fā)現(xiàn)price更小就update最小價(jià)格。profit=檢查是不是這個(gè)數(shù)字之前的某個(gè)max value