力扣题库之数值加一

  • Post author:
  • Post category:其他




力扣题库之数值加一

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

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

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

    示例 1:

    输入: [1,2,3]

    输出: [1,2,4]

    解释: 输入数组表示数字 123。

  • 对于这道题目,乍一看很简单,其实是有很多坑的,如果使用数组转字符串加1的话 因为计算机转数字,如果数据长度过大会导致数据失真,而简单的使用数组位数加一,那么这就没有考虑到满十进一的情况了。所以最后的思路是 : 如果位数数值为9 那么我在一个新数组中插入0,知道他的前面不为9了,将他的前一位加1 ,并与原数组拼接。具体看代码

var plusOne = function(arr) {
				//创建一个新数组用于存放加一之后的数字
				var newArr = []
				// var num = arr[arr.length - 1] + 1;
				//因为最后一位如果是9的话要进一 所以要从后向前遍历数组的找出为9的项
				for (var i = arr.length - 1; i >= 0; i--) {					
					if (arr[i] !== 9) {
						newArr.unshift(arr[i] + 1)
						newArr = arr.splice(0,i).concat(newArr)
						break
					}
					if (arr[i] === 9) {
						newArr.unshift(0)
					}
				}
				//当第一项为0时,这是进位过来的,那么第一位也是9 要在前面进1
				if (newArr[0] === 0) {
					newArr.unshift(1)
				}
				return newArr
			};



版权声明:本文为good_father原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。