LeetCode算法题14:
解题思路:这道题刚开始认为是比较简单的,可以直接将数组通过join、parseInt等方法转换为一个整数,然后直接+1,最后将这个整数转换为字符串后通过split方法转换为数组,但是没有考虑整数的范围问题,如果转换的整数大于最大范围(2^53),将会导致整数溢出,无法得到正确的结果,不过JS中在ES10中有一个BigInt的基本类型,可以支持任意精度的整数。通过这个基本类型可以进行 任意精度整数的运算。
该题的另外一种思路是对末尾的十进制内的数进行判断,首先对末尾数加1 判断是否小于10,若小于就直接返回结果;然后从末尾开始遍历数组到i>0,遍历时判断当前元素是否>9,若>9,将元素digits[i - 1]+digits[i] / 10 赋值给digits[i - 1],并对当前元素取10的余数;当遍历完后 ,i=0,即在数组的首位,对首位元素进行判断,是否>9,若>9,则需要将当前元素digits[i] / 10 unshift到 digits的首位,然后对digits[i+1]元素取10的余数,代码如下: