题目描述:
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
样例
给定 [1,2,3] 表示 123, 返回 [1,2,4].
给定 [9,9,9] 表示 999, 返回 [1,0,0,0].
解题思路:
可能每个人都有自己的解法,仔细观察只需要去将最后一位+1,如果和>9则进位继续+1,依次循环,如果当发现有<9的情况则直接返回数组即可。
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
样例
给定 [1,2,3] 表示 123, 返回 [1,2,4].
给定 [9,9,9] 表示 999, 返回 [1,0,0,0].
解题思路:
可能每个人都有自己的解法,仔细观察只需要去将最后一位+1,如果和>9则进位继续+1,依次循环,如果当发现有<9的情况则直接返回数组即可。
代码实现:
#include <iostream>
using namespace std;
int* arrayPlusOne(int a[]) {
for (int i = 4; i>=0; i--) {
if (++a[i]>9) {
a[i]=0;
continue;
} else {
return a;
}
}
int newArray[6] = {};
newArray[0] = 1;
return newArray;
}
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!\n";
int a[] = {9,9,9,9,9};
int *plusOne = arrayPlusOne(a);
for (int i = 0; i<=5; i++) {
cout<<plusOne[i];
}
return 0;
}
另一种解法是将数组中的数字遍历取出来组成一个数字,然后数字 +1,得到的数字再依次%10拆分成单个数字,装到数字i里面即可。