小李飛刀 刷題第三彈!

2021-09-12 23:58:26 字數 2160 閱讀 9591

正式刷題第三天。

之前看了個說法,挺認可的。

就是不要太在意一天的能呈現的價值,但是要在意累計的價值。

之前很多時候我會對今天一天沒有完成的計畫而沮喪,事實上,演算法的實踐,統計學的學習這些都是需要時間去積累去吃透。

所以,持之以恆的學習更為重要。

現在的目標是每天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...