这是我参与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)
*/
总结
这道题考察的对数组中对迭代的应用
大家可以看看我分享的一个专栏(前端搞算法)里面有更多关于算法的题目的分享,希望能够帮到大家,我会尽量保持每天晚上更新,如果喜欢的麻烦帮我点个赞,十分感谢
文章内容目的在于学习讨论与分享学习算法过程中的心得体会,文中部分素材来源网络,如有侵权,请联系删除,邮箱 182450609@qq.com