题目
解题分析
对于数组类型+1或者-1,很明显属于大数模拟加减的过程,我们需要考虑为9进1的特殊情况。
解题代码
Cpp代码
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int len = digits.size();
for(int i=len-1;i>=0;i--){
if(digits[i]==9){
digits[i]=0;
continue;
}
else {
digits[i]+=1;
return digits;
}
}
vector<int>t;
if(digits[0]==0){
t.resize(len+1);
t[0]=1;
}
return t;
}
};
C代码
int* plusOne(int* digits, int digitsSize, int* returnSize) {
for (int i = digitsSize - 1; i >= 0; i--)
{
if (digits[i] < 9) {
digits[i]++;
*returnSize = digitsSize;
return digits;
}
digits[i] = 0;
}
int* result = (int*)malloc(sizeof(int) * (digitsSize + 1));
result[0] = 1;
for (int i = 1; i < (digitsSize + 1); i++)
{
result[i] = 0;
}
*returnSize = digitsSize + 1;
return result;
}
Go语言
func plusOne(digits []int) []int {
n := len(digits);
for i:=n-1;i>=0;i--{
if digits[i]==9{
digits[i] = 0;
continue;
}else{
digits[i] += 1;
return digits;
}
}
digits = append(digits,0);
digits[0] = 1;
return digits;
}
python强者一行解决
简单解释以下python的代码:map是一个用于将能够迭代的类型每个子项进行一次函数调用得出多个函数调用结果,然后返回一个迭代器类型。可以直接给 – ''.join 或 list() 使用。由于题中的列表不是str类型,所以需要先把所有元素转str类型才能直接转str,然后 str 可以和 int 互转,最后返回一个迭代器得出 List[int] 类型
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
return list(map(int,str(int(''.join(map(str,digits)))+1)))
Java代码
class Solution {
public int[] plusOne(int[] digits) {
for(int i=digits.length-1;i>=0;i--){
if(digits[i]==9){
digits[i] = 0;
continue;
}else{
digits[i] += 1;
return digits;
}
}
int[] res = new int[digits.length+1];
res[0] = 1;
return res;
}
}
|