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

同类题目

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南岸青栀*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值