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(加法)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题989-简单-数组形式的整数加法

leetcode——989.数组形式的整数加法

989. 数组形式的整数加法『简单』

数组989. 数组形式的整数加法

c++刷LeetCode

c++刷LeetCode