正式刷題第三天。
之前看了個說法,挺認可的。
就是不要太在意一天的能呈現的價值,但是要在意累計的價值。
之前很多時候我會對今天一天沒有完成的計畫而沮喪,事實上,演算法的實踐,統計學的學習這些都是需要時間去積累去吃透。
所以,持之以恆的學習更為重要。
現在的目標是每天2題,當適合的時候就提高每天的題量!
20. 有效的括號
難度:簡單
型別:堆疊
給定乙個只包括 '(',')','','[',']' 的字串,判斷字串是否有效。我的解答**:有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
class solution:
def isvalid(self, s):
""":type s: str
:rtype: bool
"""stack =
dic = ','}':'
if len(s) < 2:
return (len(s)==0)
for i in s[1:]:
if len(stack) == 0:
elif i != dic[stack[-1]]:
else:
stack.pop()
return (len(stack)==0)
用了堆疊的方法和字典的方法,字典查詢速度會比較快。
然後對比當前字元和對應的堆疊裡的最末字元對應的另一半。
錯誤的一次是因為沒有考慮空字串,當存在為""
的時候,結果應該為true。
相對而言效率還是是可以的。
本題主要關鍵點
66. 加一
難度:簡單
型別:??
給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。我的解題**是:最高位數字存放在陣列的首位, 陣列中每個元素只儲存乙個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。
class solution:
def plusone(self, digits):
""":type digits: list[int]
:rtype: list[int]
"""a = -1
for i in digits[::-1]:
if i != 9 :
digits[a] = i+1
return digits
else:
digits[a] = 0
if (a + len(digits)) == 0:
digits.insert(0,1)
return digits
a = a - 1
用的辦法比較土。
簡單來說就是逆序遍歷,因為十進位制下,逢9進製,所以我們逆向計算有存在9的情況。
emmm.....感覺這個方法也很適合用遞迴來做。
效率上居然還可以的,錯誤過一次,主要原因是因為在資料例子為[9]
的時候,輸出結果應該為[1,0]
,所以重新進行了調整。
本題主要關鍵點
很多python的方法其實都非常的便捷,簡單的**就可以完成演算法的實現。
還是要多學習方法,比如今天的逆序遍歷,以及左側插入等。
實踐出真知,古人誠不我欺。
小李飛刀 刷題第四彈!
time 2019 02 01 昨晚其實刷了題來著,但是沒有解出來,哭泣!但是,今天重新寫了下,解出來咯 所以今天的題量要增加咯 我會加油的!14.最長公共字首 難度 簡單 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 我的解題 如下 class solution de...
刷題第三天
今天被p老師看見刷b站了,下午想到了乙個還不錯的idea,做做調研看看會不會被reject掉,今天真的好懶惰,今天可能不做太多太難的題了,明天還要起大早上英語課,我真的是好煩喲,我真的不想做題啊啊啊啊 這道題沒啥可說的,各種方法都能解決,但是我彷彿記得我多年前面測試的時候被問過一次,反轉單鏈表,反正...
Lintcode刷題(一)第三題 統計數字
1.題目描述 計算數字k在0到n中的出現的次數,k可能是0 9的乙個值 您在真實的面試中是否遇到過這個題?yes 樣例例如n 12,k 1,在 0,1,2,3,4,5,6,7,8,9,10,11,12 我們發現1出現了5次 1,10,11,12 思路 如果是一位數可以直接判斷,如果是二位數,需要用t...