zoukankan      html  css  js  c++  java
  • 加一

    题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

    最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

    你可以假设除了整数 0 之外,这个整数不会以零开头。

    我先声明一点,我有想过用循环,用算法写,可我碰到了这个测试用例:[9],[2,3,9]  还是我思路太窄。。。

    然后我就否定我一开始的思路了,暴力写法:

    class Solution:
        def plusOne(self, digits: List[int]) -> List[int]:
            ay=digits
            b=''
            for i in range(len(ay)):
                b+=str(ay[i])
            c=int(b)+1
            d=list(str(c))
            e=[]
            for i in range(len(d)):
                e.append(int(d[i]))
            return e
                

    思路很简单,读数加一放回数组即可

    执行用时 : 56 ms, 在Plus One的Python3提交中击败了64.28% 的用户
    内存消耗 : 12.9 MB, 在Plus One的Python3提交中击败了98.73% 的用户

    参考一下别人的想法:

    class Solution:
        def plusOne(self, digits: List[int]) -> List[int]:
            n = len(digits)
            jinwei = 1
            i = n-1
            while(i>=0):
                temp = digits[i]
                digits[i] = (digits[i] + jinwei) % 10
                jinwei = (temp + jinwei) // 10
                i -= 1
            if(jinwei > 0):
                digits.insert(0, jinwei)
            return digits

    这才是正经解题好不,进位思想,第一个循环最后一位加一然后除10余数赋值给最后一位,进位值由temp加1再向下取整赋值,

    之后的循环先取当前i位值加上刚才的进位值再取余,进位值再有temp+1向下取整

    最后进位如果大于0,在前面把进位插进去

  • 相关阅读:
    Go语言http之请求接收和处理 代码
    C++之IO流的状态以及使用
    C++之指向函数的指针
    C++之数组类型的形参
    C++之vector类型的形参
    C++之形参
    C++之运算符
    C++之多维数组
    C++之动态数组
    C++之指针
  • 原文地址:https://www.cnblogs.com/dmndxld/p/10792839.html
Copyright © 2011-2022 走看看