150. Evaluate Reverse Polish Notation: 遇到符號就pop出前兩個逞频,運算然后push進stack,否則就直接push進stack
151. Reverse Words in a String: 好像沒什么意義的題目
152. Maximum Product Subarray: 記錄當前乘積的最大值和最小值换薄, 最大值 是 max (前一個最大值當前值,前一個最小值當前值力试,當前值)最小值 是 min (前一個最大值當前值毛仪,前一個最小值當前值,當前值)關(guān)鍵點就在于要加入“當前值”对粪,以前沒想到這一點右冻,處理0這種特殊情況的時候很難辦
153. Find Minimum in Rotated Sorted Array: 這種題目畫個圖然后用二分法就好了
156. Binary Tree Upside Down: 這題當年我面試的時候遇到過装蓬,題意都沒理解對,當然也沒做出來纱扭,面試當然也跪了牍帚。這次用stack的方法手寫出來了,但是還有一種用recursion的方法跪但,直接做的時候花了十分鐘沒做出來履羞,看了以前的答案峦萎,思考方向有點問題:在遞歸過程中考慮有兩種一是先處理屡久,再遞歸,二是先遞歸再處理爱榔,這題屬于先遞歸被环,而且在先遞歸的時候要注意用遞歸去找new root,而不是手工創(chuàng)造(這樣是用stack)而且這題tricky一點的地方在详幽,要處理parent值的情況筛欢,然后用root.left來獲取當前的要處理的點,不能用new_root來代替root.left因為new_root是最終要返回的點唇聘,而root.left在每一層循環(huán)的時候都會變版姑。
class Solution(object):
def upsideDownBinaryTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
if not root or not root.left:
return root
new_root = self.upsideDownBinaryTree(root.left)
root.left.left = root.right
root.left.right = root
root.left = None
root.right = None
return new_root
161. One Edit Distance: 找到第一個不一樣的點,處理一下迟郎,也就是說s[i] != t[i]的時候剥险,去掉s[i] 或者去掉t[i]或者把s[i]置換成t[i],比較剩余的string
162. Find Peak Element: 這又是個二分法宪肖,比較簡單
163. Missing Ranges: 這題的意義也不大表制,維護一個lower值,也就是下邊界控乾,如果連續(xù)的話么介,就增加lower的值,否則就記錄一下蜕衡,只是有點邊界條件要考慮
165. Compare Version Numbers: 這題意義不大壤短,split dot然后依次比較就好了
166. Fraction to Recurring Decimal: 這道數(shù)學題用hashtable,把每次進入除法的數(shù)記錄下來慨仿,要重做一遍