LeetCode:989,67(加法)
Posted 南岸青栀*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:989,67(加法)相关的知识,希望对你有一定的参考价值。
989. 数组形式的整数加法
法1:暴力法
class Solution:
def addToArrayForm(self, num: List[int], k: int) -> List[int]:
#法1:暴力
# str1 = ""
# res = []
# for n in num:
# str1 += str(n)
# s = str(int(str1) + k)
# for i in range(len(s)):
# res.append(int(s[i]))
# return res
法2:直接将数字加到最后一个,设置标志位,然后依次向前。
class Solution:
def addToArrayForm(self, num: List[int], k: int) -> List[int]:
#法2:直接将数字加到最后一个,设置标志位,然后依次向前。
# flag = 0
# i = -1
# num[i] += k
# flag = num[i]//10
# num[i] %= 10
# i -= 1
# while flag!=0 and abs(i)<=len(num):
# num[i] += flag
# flag = num[i]//10
# num[i] %= 10
# i -= 1
# while flag!=0:
# num.insert(0,flag%10)
# flag //= 10
# return num
67. 二进制求和
class Solution:
def addBinary(self, a: str, b: str) -> str:
#优化
flag = 0
c = ''
if len(a)<len(b):
a,b = b,a
i = -1
c = str((int(a[i]) + int(b[i]) + flag)%2) + c
flag = (int(a[i]) + int(b[i]) + flag) // 2
i-=1
while abs(i)<=len(a):
b = "0" + b
if int(a[i])+int(b[i])+flag==0:
c='0'+c
flag=0
i-=1
elif int(a[i])+int(b[i])+flag==1:
c='1'+c
flag=0
i-=1
elif int(a[i])+int(b[i])+flag==2:
c='0'+c
flag=1
i-=1
else: #int(a[i])+int(b[i])+c==3:
c='1'+c
flag=1
i-=1
if flag != 0:
c = "1" + c
return c
#法1,逐行计算注意进位
# flag = 0
# c = ''
# if len(a)<len(b):
# a,b = b,a
# i = -1
# c = str((int(a[i]) + int(b[i]) + flag)%2) + c
# flag = (int(a[i]) + int(b[i]) + flag) // 2
# i-=1
# while abs(i)<=len(a):
# if abs(i)>len(b):
# c = str((int(a[i])+ flag)%2) + c
# flag = (int(a[i]) + flag) // 2
# else:
# c = str((int(a[i]) + int(b[i]) + flag)%2) + c
# flag = (int(a[i]) + int(b[i]) + flag) // 2
# i-=1
# if flag != 0:
# c = "1" + c
# return c
同类题目
以上是关于LeetCode:989,67(加法)的主要内容,如果未能解决你的问题,请参考以下文章