LeetCode简单题:66. 加一(Python,C++,Java)

一.解法

https://leetcode-cn.com/problems/plus-one/
要点:数字,str,str[]的转换;数组扩容问题
Python中用数字转str再转列表的方法直接实现
C++和Java中模拟进位,如果第一位都需要进位,就创造更大的数组,把第一位设为1,其他设为0

二.Python实现

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        sum1=0
        for i in range(len(digits)):
            sum1+=digits[i]*10**(len(digits)-i-1)
        sum1+=1
        #加1运算
        digits=[]
        for i in str(sum1):
            digits.append(int(i))
            #整数转化为列表,这里要注意的是i必须要先化为整形。区别是['1','2','3']和[1,2,3]
        return digits

三.C++实现

class Solution {
public:
    vector plusOne(vector& digits) {
        int num=1;
        for(int i=digits.size()-1;i>=0;i--){
            num+=digits[i];
            digits[i]=num%10;
            num/=10;
            if(!num)
                break;
        }
        if(num==1){
            digits.resize(digits.size()+1,0);
            digits[0]=1;
        }
        return digits;
    }
};

四.java实现

class Solution {
    public int[] plusOne(int[] digits) {
        for (int i = digits.length - 1; i >= 0; i--) {
            digits[i]++;
            digits[i] = digits[i] % 10;
            if (digits[i] != 0) return digits;
        }
        digits = new int[digits.length + 1];
        digits[0] = 1;
        for(int i=1;i

你可能感兴趣的:(LeetCode简单题:66. 加一(Python,C++,Java))