数组形式的整数加法 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


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


相关文章
|
1月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
69 10
|
1月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
85 4
|
2月前
|
存储 Go C语言
Python 的整数是怎么实现的?这篇文章告诉你答案
Python 的整数是怎么实现的?这篇文章告诉你答案
57 7
|
3月前
|
存储 数据处理 索引
如何删除 Python 数组中的值?
【8月更文挑战第29天】
143 8
|
3月前
|
索引 Python
向 Python 数组添加值
【8月更文挑战第29天】
43 8
|
3月前
|
存储 缓存 C语言
|
3月前
|
存储 测试技术 Python
Python 数组和列表有什么区别?
【8月更文挑战第29天】
393 4
|
Python
ZZULIOJ-1022,三整数排序(Python)
ZZULIOJ-1022,三整数排序(Python)
|
Python
ZZULIOJ-1020,两整数排序(Python)
ZZULIOJ-1020,两整数排序(Python)
|
2天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!