- Add Binary
**思路:開始是想著跟昨天一樣计福,一個(gè)數(shù)字加一吠架,那就滿位進(jìn)一,但是今天這個(gè)不一樣精居,用昨天的方法不合適锄禽。
res = ''
i, j, plus = len(a)-1, len(b)-1, 0
while i>=0 or j>=0 or plus==1:
plus += int(a[i]) if i>= 0 else 0
plus += int(b[j]) if j>= 0 else 0
res = str(plus % 2) + res
i, j, plus = i-1, j-1, plus/2
return res
- Sqrt(x)
**思路:開始是想著逐漸累加的數(shù)i,進(jìn)行平方靴姿,然后判斷x在哪個(gè)區(qū)間里沃但,結(jié)果報(bào)錯(cuò)說(shuō)溢出了。后來(lái)看到有人做題思路是二分法來(lái)找這區(qū)間佛吓,沒(méi)覺(jué)得高明多少呀宵晚,后來(lái)干脆直接用math.sqrt()函數(shù),萬(wàn)事大吉
class Solution(object):
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
return int(math.sqrt(x))
- Climbing Stairs
**思路:開始想著分奇數(shù)和偶數(shù)來(lái)求1,2的組合维雇,然后窮舉出所有的可能的1的個(gè)數(shù)和2的個(gè)數(shù)的組合淤刃,再進(jìn)行排列組合,這個(gè)時(shí)候就缺一個(gè)直接調(diào)用comb()函數(shù)吱型,可是LeetCode里面不能調(diào)用逸贾,而且我估計(jì)復(fù)雜度太高,又不會(huì)被AC,就像上道題一樣
su = 0
if n%2 == 0:
for i in range(0,n/2+1,1):
num1 = 2*i
num2 = (n-num1)/2
su += math.comb(num1+num2,num1)
else:
for i in range(0,n/2+1,1):
num1 = 2*i+1
num2 = (n-num1)/2
su += math.comb(num1+num2,num1)
return su
還是應(yīng)該去找規(guī)律铝侵,發(fā)現(xiàn)這是個(gè)斐波拉契咧
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
pre = cur = 1
for i in xrange(1, n):
pre, cur = cur, pre+cur
return cur
今天多做了一道題 超時(shí)7分鐘