这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战
推荐阅读
大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。
一、题目
1、算法题目
“给定一个由整数组成的数组,在该数的基础上加一。”
题目链接:
来源:力扣(LeetCode)
链接:66. 加一 - 力扣(LeetCode) (leetcode-cn.com)
2、题目描述
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
1 | ini复制代码示例 1: |
1 | ini复制代码示例 2: |
二、解题
1、思路分析
找出最长的后缀9,对于数组digits来说,如果末尾没有9,末尾加1即可。
末尾有若干个9,那么只需要找出从末尾开始第一个不为9的元素,将该元素加1,后面的9全部归零,然后返回。
对于数组元素全部都是9的情况,只需要构造一个比原来数组大于1的新数组,将首元素设1,其余元素为0即可。
接下来,就需要逆序遍历数组,找出9元素。
2、代码实现
代码参考:
1 | csharp复制代码public class Solution { |
3、时间复杂度
时间复杂度 : O(n)
其中n是数组的长度,只需要遍历一遍数组即可求得答案。
空间复杂度: O(1)
只需要常数级别的空间存放变量。
三、总结
不能用转换成数字然后加了之后再转换成数组的想法哦,会溢出的。
本文转载自: 掘金