持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
前言
今天的题目为简单,题目比较简单。解决的方法有特别多种,本文主要是使用了模拟的思路。模拟出所以的情况进行解题。
每日一题
今天的题目是 66. 加一,难度为简单
-
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
-
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
-
你可以假设除了整数 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 <= digits.length <= 100
- 0 <= digits[i] <= 9
题解
简单模拟
题目要求我们用一个数组进行运算,运算规则很简单,就是在个位数加一,但是要考虑到进位的这种情况,所以需要的思考就还是有的。
首先我们可以考虑有进位的情况下我们要怎么判断,可以从数组尾部往前去查找,找到的第一个不是9的数就是我们要加一的数,最坏的情况下全都是9,那么就要在数组的第一位加入一个1.
所以我们能够写一个循环,丛数组的尾部开始循环,碰到的数要是不唯9,那就简单了,直接加一然后退出循环。要是为9,那么就需要把当前位上的值变为0并且向前进一,也就是循环中的下一位加一,一直循环直到找到能够加一的那一位,直到数组遍历结束也没有找到的话,那就说明数组全都是9,那么就还需要在数组的第一位插入一个1.
最近在学习 TS 想着先从简单的算法题使用 TS 进行描写,之后的题解可能都会偏向于 TS,TS本质上还是 JS 只是会为每一个参数定义类型,来避免你调用参数上面不存在的属性或者方法。
function plusOne(digits: number[]): number[] {
let i:number = digits.length - 1;
while(i >= 0 && digits[i] === 9) {
digits[i] = 0;
i--;
}
if (i >= 0) {
digits[i]++;//累加
} else {
digits.unshift(1);
}
return digits;
};