题目地址

解题思路

image.png

题目刚开始没看懂,所以根据示例才明白了。就像是数学中末尾加1。如果加一后变成了10,那么需要向前进1。
理解了题意后,就是准备撸代码。可以判断最后一位是否为9,如果不是9,那么加1后不会变成10,直接返回结果。如果最后1位是9,循环,判断有几个9。如果一直到下标为0时都是9,那么数组中结果就是类似10000。如果不是全是9,那么就不是9的那一加1就好了。

代码

  1. var plusOne = function(digits) {
  2. const len = digits.length;
  3. if(digits[len - 1] !== 9){
  4. digits[len - 1] += 1;
  5. }else{
  6. let i = len - 1;
  7. while(digits[i] === 9){
  8. digits[i] = 0;
  9. i--;
  10. }
  11. if(i === -1){
  12. digits.unshift(1);
  13. }else{
  14. digits[i] += 1;
  15. }
  16. }
  17. return digits;
  18. };
  19. const digits = [9,9];
  20. console.log(plusOne(digits));