time:2019-02-01
昨晚其實刷了題來著,但是沒有解出來,哭泣!
但是,今天重新寫了下,解出來咯~
所以今天的題量要增加咯~
我會加油的!
14. 最長公共字首
難度:簡單
編寫乙個函式來查詢字串陣列中的最長公共字首。我的解題**如下:如果不存在公共字首,返回空字串 ""。
class solution:
def longestcommonprefix(self, strs):
""":type strs: list[str]
:rtype: str
"""length = len(strs)
result = ""
if length < 1:#如果空就不需要比較
return result
if length < 2:
result = strs[0]
return result
#找到最短詞,避免越界
l = len(strs[0])
for i in strs[1:]:
if l > len(i):
l = len(i)#最小的迴圈次數
for j in range(l):#迴圈二維 strs[a][j]
for a in range(1,length):
if strs[0][j] == strs[a][j]:#始終按第乙個陣列來做比對
if a == length - 1:#陣列最後一位
因為是第二遍寫了,所以加了很多奇怪的注釋,但是思路清晰很多。
注釋還是很重要的~
我的主要思路是:
總結:
雙重迴圈的效率還是比較低的,可以再考慮優化下,看下官方題解的方式。
13. 羅馬數字轉整數
難度:簡單
羅馬數字包含以下七種字元: i, v, x, l,c,d 和 m。
字元 數值
i 1v 5
x 10
l 50
c 100
d 500
m 1000
例如, 羅馬數字 2 寫做 ii ,即為兩個並列的 1。12 寫做 xii ,即為 x + ii 。 27 寫做 xxvii, 即為 xx + v + ii 。
通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 iiii,而是 iv。數字 1 在數字 5 的左邊,所表示的數等於大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 ix。這個特殊的規則只適用於以下六種情況:
i 可以放在 v (5) 和 x (10) 的左邊,來表示 4 和 9。
x 可以放在 l (50) 和 c (100) 的左邊,來表示 40 和 90。
c 可以放在 d (500) 和 m (1000) 的左邊,來表示 400 和 900。
給定乙個羅馬數字,將其轉換成整數。輸入確保在 1 到 3999 的範圍內。
我的解題**如下:
執行效率上屬於偏慢的那一撥。
我的主要思路是:
總結:
21. 合併兩個有序鍊錶
難度:簡單
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。
我的解題**如下:
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
class solution:
def mergetwolists(self, l1, l2):
""":type l1: listnode
:type l2: listnode
:rtype: listnode
"""r = listnode(0)#游標
算是比較大眾的乙個效率。
我的主要思路是:
總結:
小李飛刀 刷題第三彈!
正式刷題第三天。之前看了個說法,挺認可的。就是不要太在意一天的能呈現的價值,但是要在意累計的價值。之前很多時候我會對今天一天沒有完成的計畫而沮喪,事實上,演算法的實踐,統計學的學習這些都是需要時間去積累去吃透。所以,持之以恆的學習更為重要。現在的目標是每天2題,當適合的時候就提高每天的題量!20.有...
ctfshow 紅包題第四彈
進去後發現就乙個輸入框,提示我們輸入flag 不過輸了後沒反應,那麼審查元素看看 可以發現是呼叫的ctfshow 這個函式 在chrome的console視窗除錯下這個函式看下它幹嘛的 格式化下 方便審計 可以發現這是把js 變數名16進製制編碼後再把 邏輯複雜化 好我們來讀下這串 首先定義乙個變數...
牛客網刷題第四題
題目 牛牛以前在老師那裡得到了乙個正整數數對 x,y 牛牛忘記他們具體是多少了。但是牛牛記得老師告訴過他x和y均不大於n,並且x除以y的餘數大於等於k。牛牛希望你能幫他計算一共有多少個可能的數對。輸入描述 輸入包括兩個正整數n,k 1 n 10 5,0 k n 1 輸出描述 對於每個測試用例,輸出乙...