1、两数之和
暴力解法
7、整数反转
ans = … if …else …
整数范围: -1<<31至(1<<31)-1
9、回文数
[::-1]
13、罗马数字转整数
使用字典
左减右加
14、最长公共前缀
s = ''
if len(strs)>0:
for i, n in enumerate(strs[0]):
for j in range(1, len(strs)):
if i<= (len(strs[j])-1) and n == strs[j][i]:
continue
else:
return s
s += n
return s
else:
return s
20、有效的括号
初步想法使用栈,之后看了别人的代码,发现使用字典定义后再使用栈最简洁
28、实现strStr()
python最简单的做法:return haystack.find(needle)
35、搜索插入位置
若target在nums中:直接使用index
若target不在nums中:
nums.append(target)
nums.sort()
return nums.index(target)
38、报数
题目有些难理解,自己写不出来,看了别人的代码,也没看懂
class Solution:
def countAndSay(self, n):
"""
:type n: int
:rtype: str
"""
nn='1'
for i in range(n-1):
a=[]
c=[]
for i in nn:
if len(c)==0:
c.append(i)
a.append(c)
else:
if c[-1]==i:
c.append(i)
else:
c=[i]
a.append(c)
nn=''
for i in a:
nn+=str(len(i))+i[0]
return nn
53、最大子序和
当sum<0时,sum=0
为符合仅有唯一负数的情况,将max_sum初始化为nums[0]
58、最后一个单词的长度
使用split()进行切片,再返回[-1]
66、加一
res = 0
c = []
num = len(digits)
digits[-1] += 1
for i in range(1, num+1):
res += digits[i - 1] * pow(10, num - i)
return list(map(int, str(res)))