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 字符串中的元音字母翻转,注意大小写是不同的
先用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’]找出所有元音位置然后左右两个游标
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 判断一个数字是否是平方数
解法一:二分
解法二:纯数学,O(1),fast inverse square root implementation from Quake III Arena
解法三:利用平方数性质,n= 1+3+5+…+(i+2)
374. Guess Number Higher or Lower 1~n,猜选定了哪个数,调用guess(mid)判断大了还是小了,简单二分
383. Ransom Note 判断字符串A是否能由B中字符构成,类似350
387. First Unique Character in a String 判断字符串中第一个只出现了一次的字符是哪个,python的dict使用
392. Is Subsequence 判断s是否是t的字串(不用连续),两个游标
401. Binary Watch 手表上用10个bit表示时间,问num个灯亮的时候可能有几种时间可能性,枚举0-2^10,用python的bin(i).count(‘1’)判断对应的二进制数有几个1,注意判断小时<12,分钟<60
404. Sum of Left Leaves 计算一棵树所有左叶子结点的值之和,简单DFS,注意递归的时候用一个变量标记是不是左叶子
405. Convert a Number to Hexadecimal 十进制数转十六进制,注意负数特殊处理
409. Longest Palindrome 给定一个字符串,用其中的字符能组成的最长回文字符串多长?除了最中间的可能为单独字符,其他成对出现,先用python 的dict统计,然后简单数学
412. Fizz Buzz 简单模拟
414. Third Maximum Number 求第三大的数,注意去重(先转set再转list)以及小于三个数的情况
415. Add Strings 模拟大数加法
434. Number of Segments in a String 判断一个字符串里面有几个单词(可能有前导0,后导0,连续多个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 一个数组里一些数字出现两次,其他出现一次,问哪些数字没出现过,利用-1标记出现过的数字
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 一串数字,每次让其中n-1个加1,问一共几次能让所有数变成相同值,数学题
t = min(nums)
for i in nums:
res += i - t