leetcode刷題記錄 2018 7 4

2021-08-21 05:27:42 字數 2551 閱讀 9176

1.反轉整數。

給定乙個 32 位有符號整數,將整數中的數字進行反轉。

示例 1:

輸入: 123

輸出: 321

示例 2:

輸入: -123

輸出: -321

示例 3:

輸入: 120

輸出: 21

class solution:

def reverse(self, x):

""":type x: int

:rtype: int

"""a = int((str(abs(x))[::-1]))

if x>=0:

b = a

else:

b = -a

if -2147483648 < b < 2147483647 :

return b

else:

return 0

2.兩個排序陣列的中位數

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 。

請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o(log (m+n)) 。

示例 1:

nums1 = [1, 3]

nums2 = [2]

中位數是 2.0

示例 2:

nums1 = [1, 2]

nums2 = [3, 4]

中位數是 (2 + 3)/2 = 2.5

class solution:

def findmediansortedarrays(self, nums1, nums2):

""":type nums1: list[int]

:type nums2: list[int]

:rtype: float

"""nums1.extend(nums2)

nums1.sort()

n = len(nums1)

m = n/2

if n == 0:

return 0

elif n%2 == 0:

return (nums1[int(m)]+nums1[int(m-1)])/2.0

else:

return nums1[int(m)]

3.字串轉整數

實現atoi,將字串轉為整數。

在找到第乙個非空字元之前,需要移除掉字串中的空格字元。如果第乙個非空字元是正號或負號,選取該符號,並將其與後面盡可能多的連續的數字組合起來,這部分字元即為整數的值。如果第乙個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成整數。

字串可以在形成整數的字元後面包括多餘的字元,這些字元可以被忽略,它們對於函式沒有影響。

當字串中的第乙個非空字串行不是個有效的整數;或字串為空;或字串僅包含空白字元時,則不進行轉換。

若函式不能執行有效的轉換,返回 0。

說明:假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231,  231 − 1]。如果數值超過可表示的範圍,則返回  int_max (231 − 1) 或 int_min (−231) 。

示例 1:

輸入: "42"

輸出: 42

示例 2:

輸入: "   -42"

輸出: -42

解釋: 第乙個非空白字元為 '-', 它是乙個負號。

我們盡可能將負號與後面所有連續出現的數字組合起來,最後得到 -42 。

示例 3:

輸入: "4193 with words"

輸出: 4193

解釋: 轉換截止於數字 '3' ,因為它的下乙個字元不為數字。

示例 4:

輸入: "words and 987"

輸出: 0

解釋: 第乙個非空字元是 'w', 但它不是數字或正、負號。

因此無法執行有效的轉換。

示例 5:

輸入: "-91283472332"

輸出: -2147483648

解釋: 數字 "-91283472332" 超過 32 位有符號整數範圍。

因此返回 int_min (−231) 。

class solution(object):

def myatoi(self, s):

""":type str: str

:rtype: int

"""import re

list_s = re.findall(r"^[-+]?\d+", s.strip())

if not list_s:

return 0

else:

num =int(''.join(list_s))

if num >2**31 -1:

return 2**31 -1

elif num < -2**31:

return -2**31

else:

return num

leetcode刷題記錄

我覺得每天來兩道,練習練習,再看看人家是怎麼優化的。1.給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。c 暴力求解,204ms,9.1m class solution for index,num in enumerate ...

LeetCode刷題記錄

動態規劃和貪心演算法的異同點 class solution throw newruntimeexception 時間複雜度 o n 2 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o n o n 的時間。因此時間複雜度為 o n 2 需要一種方法,尋找符合要求的元...

leetcode刷題記錄

工作之餘刷刷題排解下寂寞 1 面試題66.構建乘積陣列 解題思路 題目要求可以簡化為求陣列中任意乙個元素左右兩邊所有元素的乘積。偷懶就用了乙個套路,練習了p c c python class solution def constructarr self,a list int list int 除法是...