0
点赞
收藏
分享

微信扫一扫

[数组]NC180 给数组加一-简单

七千22 2022-07-27 阅读 60

​​NC180 给数组加一​​

描述

给定一个用数组表示的数字,即数组中每个数表示一个数位上的数,例如 [1,2,3],表示 123 ,请问给这个数字加一后得到的结果(结果同样以数组的形式返回)。


注意:数组中不可能出现负数,且保证数组的首位即数字的首位不可能是 0 。


数据范围: 数组长度满足  ,数组中每个数满足 

示例1

输入:

[1,2,3]

返回值:

[1,2,4]

示例2

输入:

[1,9]

返回值:

[2,0]

示例3

输入:

[9]

返回值:

[1,0]

题解

很简单,从数组的最后一位开始进行加一,将相加的个位数原地放到nums上,初始设置进位标记为1,每次相加后再更新进位标记,如果进位标记为0则可以直接退出循环。

退出循环后,如果进位标记仍然是1,则需要在nums的前面再插入一个1。

代码如下:

#include <bits/stdc++.h>

using namespace std;
vector<int> plusOne(vector<int> &nums)
{
int carray = 1;
for (int i = nums.size() - 1; i >= 0; --i)
{
if (carray == 0)
{
break;
}

int t = carray + nums[i];
nums[i] = t % 10;
carray = t / 10;
}

if (carray == 0)
{
return nums;
}

std::vector<int> ans(nums.size() + 1);// 可以直接在nums的前面插入一个1,这里不必要重新申请内存的·~
ans[0] = 1;
for (int i = 0; i < nums.size(); ++i)
{
ans[i + 1] = nums[i];
}
return ans;
}


举报

相关推荐

0 条评论