力扣-66. 加一

文章目录

解题思路

复制代码
根据题目可以得出此题一共有3种需要特殊判断的地方。
	1.数组元素的最后一个元素是否为9,如果是那就将此处元素置0,如果不是那就此处元素加1。按照这个逻辑将digits数组重新赋值。
	2.判断重新赋值的digits数组的首元素是否是0,如果是就需要申请一个digitsSize+1的空间来存储数组,如果不是就直接将digits数组返回,数组长度是digitsSize。

代码

c 复制代码
int* plusOne(int* digits, int digitsSize, int* returnSize) 
{
    int end = digitsSize - 1;
    int *arr = NULL;
    while(end + 1)/*end+1 是确保digits数组每一个元素都遍历到*/
    {
        /*元素为9就置0,不为9就加1*/
        if(digits[end] == 9)
        {
            digits[end] = 0;
        }
        else
        {
            digits[end] =  digits[end] + 1;
            break;
        }
        end--;
    }
    
    /*判断重新赋值后的digits数组的首元素是否是0*/
    if(0 == digits[0])/*特殊情况:需要申请的空间为digitsSize+1*/
    {
        /*arr数组为{1,0,0,0,..,0}*/
        arr = (int *)malloc(sizeof(int) * (digitsSize + 1));
        arr[0] = 1;
        memset(&arr[1], 0, sizeof(int) * digitsSize);/*除了首元素其他元素置0*/
        *returnSize =digitsSize + 1;
    }
    else/*常规情况,直接将digits数组数组返回即可*/
    {
        *returnSize =digitsSize;
        return digits;
    }

    return arr;
}
相关推荐
yyds_yyd_100868 小时前
1464. 数组中两元素的最大乘积(2026.07.27)
数据结构·c++·算法·leetcode
玖玥拾11 小时前
LeetCode 26 删除有序数组中的重复项
算法·leetcode
白白白小纯13 小时前
算法篇—返回倒数第k个节点
c语言·数据结构·算法·leetcode
退休倒计时13 小时前
【复习】LeetCode 二叉树DFS TypeScript
算法·leetcode·typescript·深度优先
白白白小纯15 小时前
算法篇—链表的中间节点
c语言·数据结构·算法·leetcode
Frostnova丶15 小时前
(19)LeetCode 54. 螺旋矩阵
算法·leetcode·矩阵
Frostnova丶15 小时前
(18)LeetCode 73. 矩阵置零
算法·leetcode·矩阵
番茄撒旦在上16 小时前
LeetCode 98.验证二叉搜索树-Medium
算法·leetcode
rannn_11116 小时前
【力扣hot100】哈希表专题——从两数之和到最长连续序列
java·算法·leetcode·哈希
go不是csgo17 小时前
从模板到五道 LeetCode:完全背包的 Golang 教学笔记
笔记·leetcode·golang