20180423
1.twosum
学习到的函数:enumerate():
用法:对于一个字典L,返回其索引和键值。for i,n in enumerate(L): return i,n
2.two Sum2
set()函数:
用法:删除掉重复元素,构造一个无序数组,可以进行交,并,差运算。
zip()函数:
用法:将两个数组组合到一块,例如:a=[1,2,3] b=[2,3,4] zip(a,b)=[(1,2),(2,3),(3,4)]
set()函数和zip函数结合可以对两个数组相似性进行判断,例如a={"cat","cat","dog","dog"},b={aabb},这两个数组形式相似。
20180424
3.Valid Perfect Square
牛顿法逼近求解:
给一个数,判断是否为平方数。用到了牛顿法,逐渐逼近。x-x0=(f(x)-f(x0))/f'(x)。
4.Valid Parentheses
判断给出的括号是否对应(例如:[({})])。这一题用到了字典和栈,判断给出的s是否在dic={'}':'{',']':'[',')':'('},若在则进栈。
5.Valid Parentheses2(680)
判断一个数列能不能至多删除一个字符,使其变为回文,这个算法分两步,从判断两端入手,一直到最后一个字符。if s[left]!=s[right] 肯定两端有不相同的字符,则使用one = s[left:right] two = s[left+1,right+1]然后让one,two和one[::-1],two[::-1]对比,断点有个字符不对,就会发现,然后剔除。
20180425
6.Jewels and Stones(771)
map()函数:
map(function,literate...)这是个映射函数,对literate里面的数在function计算之后返回出来:例如:z=map(lambda x:x**2,[1,2,3]) z=[1,4,9]
匿名函数:
不用返回值,一般函数这样写:def square(x):return x**2 可以写为: lambda x :x**2
count()方法:
count(sub,start,end) 搜索字符sub,开始点到结束点。return sum(map(J.count,S))
20180426
7.Unique Morse Code Words(804)
数字与字母转变与字母与数字转变:
chr(64) = 'A' 数字转换字母
ord('A') = 65 字母转换为数字
怎样选择单词组中的单词和单词中的字母:
for word in words:
for s in word:
8.Hamming Distance(461)
二级制运算符:
>>、<<、&、|、^ 分别代表左移,右移,与,或,异或,左移1位除以2,左移两位除以4,右移一位乘以2,右移两位乘以4
汉明距离:表示两个等长字符串在不同位置上的不同的字符数目。
解答:
由汉明距离定义可知,求两个字符串不同的字符有多少个,可以用异或概念:相同为0,不同为1,再计算1的数量,用count()函数。
9.Judge Route Circle(657)
return moves.count('U') == moves.count('D') and moves.count('L') == moves.count('R')
20180428
10.Self Dividing Numbers
xrange和range区别:
xrange返回一个生成器,range返回一个列表,在返回很大的时候,用xrange好于range
20180503
11.Array Partition I(561)
sorted()函数:
对阵列进行排序
12.Shortest Distance to a Character(821)
列表循环赋值
positions = [i for i,letter in emumerate(S) if letter == C] 这个表达式是将列表S中的与C相同的字母序号放入一个列表中。
for position in positions position指位置,而不是值。
13.Number Complement(476)
十进制转二级制与二进制转十进制
十->二 b = bin(d)[2:] 前面会有0bxxxx;二->十 d = int(b,2)
构造全len(b)个‘1’
i = i << len(bin(b)[2:]) i-1 后就是 11111111111
20180504
14.Reverse String(344)
翻转代码:
s=s[::-1]
20180505
15.Reverse Words in a String III(557)
join()函数
就是将字段连接到一起,e.g. a= '-'.join(sequence) sequence = 'abc' print: a-b-c 就是要插到它们中间。