LeetCode算法学习之--数组--加一

166 阅读2分钟

这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

大家好今天给大家分享下一道 LeetCode 简单难度 的题目[加一]

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

题目

示例 1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:

输入:digits = [0]
输出:[1]
 

分析

1.一个整数被拆开组成一个数组

2.整数加1,如果末尾为9 就需要进位

解法

1.迭代

解法一:迭代

思路
1.从后向前迭代
2.取余数
3.如果取余后是0则继续向前加1,但是如果遇到了第一个位置上是0,则需要在数组前面加一位1
*/

var plusOne = function (digits) {
  for (let i = digits.length - 1; i >= 0; i--) {
    digits[i] = (digits[i] + 1) % 10;

    if (digits[i] !== 0) {
      break;
    } else {
      //如果已经是第一个位 则需要在数组前面加一位1
      if (i === 0) {
        digits.unshift(1);
      }
    }
  }

  return digits;
};

/* 复杂度
  时间 最小是O(n), 最大是2n
  空间 O(1)
  */

1.png

总结

这道题考察的对数组中对迭代的应用

大家可以看看我分享的一个专栏(前端搞算法)里面有更多关于算法的题目的分享,希望能够帮到大家,我会尽量保持每天晚上更新,如果喜欢的麻烦帮我点个赞,十分感谢

文章内容目的在于学习讨论与分享学习算法过程中的心得体会,文中部分素材来源网络,如有侵权,请联系删除,邮箱 182450609@qq.com