进位算法(leetcode第66题)

题目描述:

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

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

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

示例 1:

复制代码
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

示例 2:

复制代码
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。

示例 3:

复制代码
输入:digits = [0]
输出:[1]

算法:

思路:

用jw来记录最高位的状态

代码实现:
cpp 复制代码
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* plusOne(int* digits, int digitsSize, int* returnSize)
{
    int jw = 1;//用于判定最高位是否进位
    int i;
    for (i = digitsSize - 1; i >= 0; i--) {
        digits[i] = digits[i] + jw;
        jw = digits[i] / 10;
        digits[i] = digits[i] % 10;
    }
    *returnSize = digitsSize + jw;//长度扩展判断
    int* sum = (int*)malloc(sizeof(int) * *returnSize);
    memset(sum, 0, sizeof(int) * *returnSize);
    for (i = digitsSize - 1; i >= 0; i--) {
        sum[i + jw] = digits[i];
    }
    sum[0] += jw;//最高位赋值
    
    return sum;
}

原解答链接:https://leetcode.cn/problems/plus-one/

相关推荐
贾斯汀玛尔斯2 分钟前
每天学一个算法--单调栈(Monotonic Stack)
运维·服务器·算法
ZPC82106 分钟前
ROS2 速度远快于 UDP的完整方案(同机节点)
人工智能·算法·计算机视觉·机器人
khalil102014 分钟前
代码随想录算法训练营Day-34动态规划03 | 01背包问题 二维、01背包问题 一维、416. 分割等和子集
数据结构·c++·算法·leetcode·动态规划·背包问题·01背包
华清远见IT开放实验室17 分钟前
AI 算法核心知识清单(深度实战版2)
人工智能·深度学习·算法·机器学习·ai·模型训练
点云侠1 小时前
隧道中线提取的优化方法
c++·算法·最小二乘法
圣保罗的大教堂1 小时前
leetcode 3761. 镜像对之间最小绝对距离 中等
leetcode
minji...1 小时前
Linux 线程同步与互斥(五) 日志,线程池
linux·运维·服务器·开发语言·c++·算法
python_DONG1 小时前
响应面法(Response Surface Methodology, RSM)单目标优化算法
算法·数学建模
6Hzlia1 小时前
【Hot 100 刷题计划】 LeetCode 108. 将有序数组转换为二叉搜索树 | C++ 分治法详解
c++·算法·leetcode
itzixiao2 小时前
L1-051 打折(5分)[java][python]
java·python·算法