数组形式的整数加法 Python板子

简介: 数组形式的整数加法 Python板子

问题描述:


b49fe0e498014293a425855329297126.png下面提供两种解决办法  

方法一 :数组 数字化 返回两数相加 优点实现起来代码简单 缺点 效率低下

class Solution:
    def addToArrayForm(self, A: List[int], K: int) -> List[int]:
        s=0
        n=len(A)-1
        while n>=0:
            s+=A[len(A)-n-1]*10**n
            n-=1
        return [int(i) for i in str(s+K)]

6c9f5472f3d840bbb0d61472e4bc3a97.png

下面进行优化:

class Solution:
    def addToArrayForm(self, A: List[int], K: int) -> List[int]:
        l1=len(A)-1
        add=0#进制
        answer=[]
        while l1>=0 or K!=0:#只要数组没有被遍历完
            x=0 if l1<0 else A[l1]
            y=0 if K==0 else K%10
            sum=x+y+add
            add=sum//10
            answer.append(sum%10)
            l1-=1
            K//=10
        if add>0:answer.append(add)
        return answer[::-1]

代码分析:用add储存进制数,一开始同时从A和K的最右端遍历


细节1:大可不必再创建一个数组K,可以直接利用%和//的特点,提高时间效率


细节2:如果l1<0即意味着A[l1]默认为0了。实际上sum=A[l1]+K%10+add


从数学角度讲 l1>=0 sum的表达式的确没错 可是当l1<0 便首先报错 因而就无所谓执行到sum这一步了 这是由于A[l1]是一种访问列表的操作 前提就是不能越界 因而 使用两个变量X,Y来替代作为每次循环要执行的参数,换句话说,在写代码的过程中,要合理引入变量,当然直接访问也是一个不错的选择如果不报错


细节3:当执行到最前端的时候 比如 是8+3 那么answer的最后一位保存了‘1’,而进制1并没有保存下来,因为我们每次append进去的都是取余后的结果。所以需要对最前端另外处理,如果add>0(说明满十)就append add


细节4:逆序输出

8ae53e7809a5452bbfaab0332d7f6b15.png


我是小郑 期待和你一起进步😀


相关文章
|
2月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
92 10
|
2月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
115 4
|
3月前
|
存储 Go C语言
Python 的整数是怎么实现的?这篇文章告诉你答案
Python 的整数是怎么实现的?这篇文章告诉你答案
66 7
|
4月前
|
存储 数据处理 索引
如何删除 Python 数组中的值?
【8月更文挑战第29天】
192 8
|
4月前
|
索引 Python
向 Python 数组添加值
【8月更文挑战第29天】
59 8
|
4月前
|
存储 缓存 C语言
|
4月前
|
存储 测试技术 Python
Python 数组和列表有什么区别?
【8月更文挑战第29天】
666 4
|
Python
ZZULIOJ-1022,三整数排序(Python)
ZZULIOJ-1022,三整数排序(Python)
|
Python
ZZULIOJ-1020,两整数排序(Python)
ZZULIOJ-1020,两整数排序(Python)
|
16天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
下一篇
DataWorks