给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
// digits[digits.length-1]++;
// if(){
// }
let s = digits.toString().replace(/,/g,"");
// console.log(s);
// console.log(s.length);
// console.log("72850912953667328437957747494701117400".localeCompare("6145390195186705500"));
// parseFloat
// let num = parseFloat(s);
let num;
let numS = new Array();
let rs = new Array();
if((s.length<17)||((s.length==17)
&&(s.localeCompare("27466443773796500"))<1)
||((s.length==19)&&(s.localeCompare("6092137628069415100"))<1)){
num = new Number(s);
num++;
numS = num.toString();
}else{
// console.log("============");
let tt = digits[digits.length-1]+1;
// console.log(tt);
if(tt>9){
digits[digits.length-1] = 0;
// digits[digits.length-2]++;
digits[digits.length-2] = digits[digits.length-2]+1;
// console.log("~~~"+digits[digits.length-2]);
for(let kk = digits.length-2;kk>0;kk--){
// console.log(kk,digits[kk]);
if(digits[kk]>9){
digits[kk]=0;
digits[kk-1]++;
}else{
if(kk!=(digits.length-2)){
digits[kk]++;
}
break;
}
}
if(digits[0]>9){
// console.log("$$$");
rs=new Array();
// // rs.push(1);
// console.log(rs);
// digits[0] = 0;
// // rs.push(digits);
// // rs.
// rs.concat(1,digits);
let sss = digits[0].toString();
rs.push(parseInt(sss.substr(0,1)));
rs.push(parseInt(sss.substr(1,1)));
// console.log(rs);
for(let ii = 1;ii<digits.length;ii++){
rs.push(digits[ii]);
if(ii > digits.length-2){
// console.log(rs);
}
}
return rs;
}
}else{
digits[digits.length-1] = tt;
}
rs = digits;
}
for(let i=0;i<numS.length;i++){
rs.push(numS.substr(i,1));
}
return rs;
};