自己做的 刚开始做 写的有点慢
第1题
class Solution(object):
def twoSum(nums, target):
count=0
for a in range(0,len(nums)-1):
count+=1
for b in range(count,len(nums)):
if(nums[a]+nums[b]==target):
return [a,b]
print('No Result')
return None
print(twoSum(nums=[2,3,4],target=6))
第2题
class Solution(object):
def addTwoNumbers(self, l1, l2):
res = {}
finalres = []
up = 0
w = 0
while l1 != None and l2 != None:
sum = l1.val + l2.val
if (sum > 9):
up = 1
res[str(w + 1)] = 1
if (res.get(str(w)) != None):
res[str(w)] = res.get(str(w)) + (sum % 10)
else:
res[str(w)] = sum % 10
w += 1
l1 = l1.next
l2 = l2.next
else:
up = 0
if (res.get(str(w)) != None):
res[str(w)] = res[str(w)] + sum
if (res.get(str(w)) > 9):
res[str(w)] = res[str(w)] - 10
res[str(w + 1)] = 1
else:
res[str(w)] = sum
w += 1
l1 = l1.next
l2 = l2.next
while l1 != None:
if (res.get(str(w)) != None):
res[str(w)] = res[str(w)] + l1.val
if (res.get(str(w)) > 9):
res[str(w)] = res[str(w)] - 10
res[str(w + 1)] = 1
else:
res[str(w)] = l1.val
w += 1
l1 = l1.next
while l2 != None:
if (res.get(str(w)) != None):
res[str(w)] = res[str(w)] + l2.val
if (res.get(str(w)) > 9):
res[str(w)] = res[str(w)] - 10
res[str(w + 1)] = 1
else:
res[str(w)] = l2.val
w += 1
l2 = l2.next
for _ in range(w + 1):
if (res.get(str(_)) != None):
finalres.append(res.get(str(_)))
return finalres
第20题
# 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
# #
# # 有效字符串需满足:
# #
# # 左括号必须用相同类型的右括号闭合。
class Solution(object):
def push(self,list,obj):
list.append(obj)
print('push ',obj,'successed and the index is ',len(list))
return obj
def pop(self,list):
if(len(list)!=0):
obj=list[-1]
list.pop()
print('pop',obj,'successed')
return obj
else:
return None
def getTop(self,list):
if len(list)!=0:
return list[-1]
else:
return None
def isValid(self,s):
sa=list(s)
listA=[]
listB=[]
for _ in range(len(sa)):
self.push(listA,sa[len(sa)-_-1])
print('listA start : ',listA)
for firstPop in range(len(sa)):
if len(listA)==0:
print('break')
break
topA=self.getTop(listA)
if(topA=='('or topA=='[' or topA=='{'):
self.pop(listA)
self.push(listB,topA)
else:
b = self.getTop(listB)
if((topA == ')' and b == '(') or (topA == ']' and b == '[') or (topA == '}' and b == '{')):
self.pop(listA)
self.pop(listB)
else:
return False
print('listA:', listA)
print('listB:', listB)
a=self.getTop(listA)
b=self.getTop(listB)
if(a==None and b==None):
return True
else:
return False
第66题
#
# 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
#
# 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
#
# 你可以假设除了整数 0 之外,这个整数不会以零开头。
# 示例 1:
#
# 输入: [1,2,3]
# 输出: [1,2,4]
# 解释: 输入数组表示数字 123。
# 示例 2:
#
# 输入: [4,3,2,1]
# 输出: [4,3,2,2]
# 解释: 输入数组表示数字 4321。
class Solution(object):
def plusOne(digits):
newlist=[]
newlist2=[]
#判断输入是否为空
if(len(digits)==0):
print('there\'s no digits')
return None
else:
getTheLast=digits.pop()
sum=getTheLast+1
if(sum==10):
newlist.append(0)
if(len(digits)!=0):
t=digits.pop()+1
digits.append(t)
else:
digits.append(1)
else:
#如果小于10直接递归结束
newlist.append(sum)
print('sum',sum)
while(len(digits)!=0):
newlist.append(digits.pop())
while(len(digits)!=0):
gtl = digits.pop()
if (gtl == 10):
newlist.append(0)
if (len(digits)!=0):
digits.append(digits.pop() + 1)
else:
digits.append(1)
else:
newlist.append(gtl)
while (len(digits) != 0):
newlist.append(digits.pop())
print('digits:', digits)
print('newlist:',newlist)
#反转
for _ in range(len(newlist)):
newlist2.append(newlist[len(newlist)-_-1])
print(newlist2)
return newlist2
plusOne([9,9])
未完待续