2021.02.01
AC
Easy
345,349,350,367,374,383,387,392
2021.02.05
AC
Easy
401,404,405,409,414
2021.02.06
AC
Easy
415,434
2021.02.07
AC
Easy
441,453
題目分類
345. Reverse Vowels of a String 字符串中的元音字母翻轉(zhuǎn),注意大小寫是不同的
先用idx = [i for i,x in enumerate(s) if x == 'a' or x == 'e' or x == 'i' or x == 'o' or x == 'u' or x == 'A' or x == 'E' or x == 'I' or x == 'O' or x == ‘U’]找出所有元音位置然后左右兩個游標(biāo)
349. Intersection of Two Arrays 判斷兩個列表的重合元素,要求去重
解法一:利用python的dict
解法二:利用python的set
nums1 = set(nums1)
nums2 = set(nums2)
return list(nums1&nums2)
解法三:sort nums2,然后每次二分查找
350. Intersection of Two Arrays II 判斷兩個列表的重合元素,不要去重
解法一:利用python的dict
367. Valid Perfect Square 判斷一個數(shù)字是否是平方數(shù)
解法一:二分
解法二:純數(shù)學(xué),O(1),fast inverse square root implementation from Quake III Arena
解法三:利用平方數(shù)性質(zhì),n= 1+3+5+…+(i+2)
374. Guess Number Higher or Lower 1~n,猜選定了哪個數(shù),調(diào)用guess(mid)判斷大了還是小了,簡單二分
383. Ransom Note 判斷字符串A是否能由B中字符構(gòu)成,類似350
387. First Unique Character in a String 判斷字符串中第一個只出現(xiàn)了一次的字符是哪個,python的dict使用
392. Is Subsequence 判斷s是否是t的字串(不用連續(xù)),兩個游標(biāo)
401. Binary Watch 手表上用10個bit表示時間,問num個燈亮的時候可能有幾種時間可能性,枚舉0-2^10,用python的bin(i).count(‘1’)判斷對應(yīng)的二進(jìn)制數(shù)有幾個1,注意判斷小時<12,分鐘<60
404. Sum of Left Leaves 計算一棵樹所有左葉子結(jié)點的值之和,簡單DFS,注意遞歸的時候用一個變量標(biāo)記是不是左葉子
405. Convert a Number to Hexadecimal 十進(jìn)制數(shù)轉(zhuǎn)十六進(jìn)制,注意負(fù)數(shù)特殊處理
409. Longest Palindrome 給定一個字符串,用其中的字符能組成的最長回文字符串多長?除了最中間的可能為單獨字符,其他成對出現(xiàn),先用python 的dict統(tǒng)計,然后簡單數(shù)學(xué)
412. Fizz Buzz 簡單模擬
414. Third Maximum Number 求第三大的數(shù),注意去重(先轉(zhuǎn)set再轉(zhuǎn)list)以及小于三個數(shù)的情況
415. Add Strings 模擬大數(shù)加法
434. Number of Segments in a String 判斷一個字符串里面有幾個單詞(可能有前導(dǎo)0,后導(dǎo)0,連續(xù)多個0,整個字符串空串)
441. Arranging Coins 給定n,問1+2+。。k<=n的k
l = 1
r = n
while l < r:
mid = math.ceil((l + r) / 2)
if mid * (mid + 1) == 2 * n:
return int(mid)
if mid * (mid + 1) > 2 * n:
r = mid - 1
else:
l = mid
return int(l)
448. Find All Numbers Disappeared in an Array 一個數(shù)組里一些數(shù)字出現(xiàn)兩次,其他出現(xiàn)一次,問哪些數(shù)字沒出現(xiàn)過,利用-1標(biāo)記出現(xiàn)過的數(shù)字
for i in range(0, len(nums)):
if nums[abs(nums[i]) - 1] > 0:
nums[abs(nums[i]) - 1] *= -1
for i in range(0, len(nums)):
if nums[i] > 0:
res.append(i + 1)
453. Minimum Moves to Equal Array Elements 一串?dāng)?shù)字,每次讓其中n-1個加1,問一共幾次能讓所有數(shù)變成相同值,數(shù)學(xué)題
t = min(nums)
for i in nums:
res += i - t