• Leecode刷题之旅-C语言/python-66加一


    /*
     * @lc app=leetcode.cn id=66 lang=c
     *
     * [66] 加一
     *
     * https://leetcode-cn.com/problems/plus-one/description/
     *
     * algorithms
     * Easy (37.65%)
     * Total Accepted:    39.4K
     * Total Submissions: 104.7K
     * Testcase Example:  '[1,2,3]'
     *
     * 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
     * 
     * 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
     * 
     * 你可以假设除了整数 0 之外,这个整数不会以零开头。
     * 
     * 示例 1:
     * 
     * 输入: [1,2,3]
     * 输出: [1,2,4]
     * 解释: 输入数组表示数字 123。
     * 
     * 
     * 示例 2:
     * 
     * 输入: [4,3,2,1]
     * 输出: [4,3,2,2]
     * 解释: 输入数组表示数字 4321。
     * 
     * 
     */
    /**
     * Return an array of size *returnSize.
     * Note: The returned array must be malloced, assume caller calls free().
     */
    int* plusOne(int* digits, int digitsSize, int* returnSize) {
        int len = digitsSize;
        int flag = 1;
        int bak_array[digitsSize + 1];
        int * array;
        /* 进位实现 */
        for(int i = digitsSize - 1; i >= 0; i--)
        {
            if(digits[i] + flag > 9)
            {
                if(i == 0)
                {
                    bak_array[i] = 1;
                    bak_array[digitsSize] = 0;
                    len = digitsSize + 1;
                }
                else
                {
                    bak_array[i] = 0;
                }
                flag = 1;
            }
            else
            {
                bak_array[i] = digits[i] + flag;
                flag = 0;
            }
        }
        
        /* 为数组分配空间 */
        array = (int *)malloc(sizeof(int) * len);
        /* 返回数组大小赋值 */
        *returnSize = len;
        
        /* 将数据拷贝到动态分配的数组 */
        memcpy(array, bak_array, sizeof(int) * len);
        return array;
    }

    这里要考虑999这样的,需要再多一位,考虑1999这样的,或者111这种普通的。

    然后if判断,仔细一点就很简单。最后统计新数组的长度(如果首位不进位的话就和原数组长度一样,否则多一位)

    返回整个数组(这里用到一个memcpy函数,直接复制了,也可以建立个循环,自己挨个赋值拷贝过去)

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    python:

    #
    # @lc app=leetcode.cn id=66 lang=python3
    #
    # [66] 加一
    #
    # https://leetcode-cn.com/problems/plus-one/description/
    #
    # algorithms
    # Easy (37.65%)
    # Total Accepted:    39.4K
    # Total Submissions: 104.7K
    # Testcase Example:  '[1,2,3]'
    #
    # 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
    # 
    # 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
    # 
    # 你可以假设除了整数 0 之外,这个整数不会以零开头。
    # 
    # 示例 1:
    # 
    # 输入: [1,2,3]
    # 输出: [1,2,4]
    # 解释: 输入数组表示数字 123。
    # 
    # 
    # 示例 2:
    # 
    # 输入: [4,3,2,1]
    # 输出: [4,3,2,2]
    # 解释: 输入数组表示数字 4321。
    # 
    # 
    #
    class Solution:
        def plusOne(self, digits: List[int]) -> List[int]:
                num=0
                for i in range(len(digits)):
                    num =num*10+digits[i]
                num+=1
                strnum = str(num)
                res = []
                for i in range(len(strnum)):
                    res.append(int(strnum[i]))
                return res

    用python就走歪门邪道了。。把数组中的数取出来 然后把数加1,变成字符,然后遍历字符串挨个塞进列表中,最后返回列表即可。

  • 相关阅读:
    强化学习 | D3QN原理及代码实现
    Airtest入门及多设备管理总结
    JS图片base64压缩
    ABP框架
    .net gof23种设计模式
    VS2013添加Socket
    VS2013用InstallShield打包winfrom项目
    .net core3.1 log4net无法写日志
    git commit 修改提交说明信息
    screen 使用总结
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10509937.html
Copyright © 2020-2023  润新知