题目:加一
leetcode链接:初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台
说明:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
理解
1、有一个非空且非负的整数数组,我们需要给该数组的末尾位加1
2、数组元素按高->低位顺序排列,且每个元素都只是个位数
3、看示例我们可能会有点迷惑,或者觉得太简单了,不就是末尾加1吗?那直接末尾位加1,然后返回就好了,然而实际上,这只是最简单的情况,还有的情况是末尾位为9,或者其它位数也可能存在9的情况,这才是需要处理的重点。
思路:
1、遍历数组元素(逆序),如果该元素不为9,那么直接加1返回即可,如果该元素为9,那么该元素用0代替它,如果出现都是9的情况,那么末尾我们在数组头元素再补个1即可
题解:
方案一、不为9的元素直接加1并且返回数组,否则用0代替该元素
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
var len = digits.length
for(var i = len - 1; i >= 0; i--) {
if (digits[i] != 9) {
digits[i] += 1
return digits
} else {
digits[i] = 0
}
}
digits.unshift(1)
return digits
};
方案二:
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
var len = digits.length
for(var i = len - 1; i >= 0; i--) {
digits[i]++
digits[i] = digits[i] % 10
if (digits[i] != 0) {
return digits
}
}
digits.unshift(1)
return digits
};