题目:
加一
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
样例
给定 [1,2,3] 表示 123, 返回 [1,2,4].
给定 [9,9,9] 表示 999, 返回 [1,0,0,0].
解题:
好像只有这样搞,对应进位的时候,要新定义个数组
Java程序:
public class Solution {/*** @param digits a number represented as an array of digits* @return the result*/public int[] plusOne(int[] digits) {// Write your code hereint len = digits.length;int carray = 1;for(int i = len-1;i>=0;i--){carray +=digits[i];digits[i] = carray%10;carray = carray/10;}if(carray!=1)return digits;else {int nums[] = new int[len+1];nums[0] = 1;for(int i=1;i
}
总耗时: 11253 ms
Python程序:
class Solution:# @param {int[]} digits a number represented as an array of digits# @return {int[]} the resultdef plusOne(self, digits):# Write your code herecarray = 1 for i in range(len(digits)-1,-1,-1):carray +=digits[i]digits[i] = carray%10carray = carray/10if carray!=1:return digitselse:digits = [1] + digitsreturn digits
总耗时: 413 ms
=================================更新===================================
参考leetcode discuss 中一个很好的方法
abcde + 1
有下面的情况:
1.个位数小于9 ,加一后,只是把个位数加一,其他位数没有变,可以直接返回加一后的数组就是答案
2.个位数等于9,说明需要进位,各位数变为0,,十位数 可能小于9 或者等于9的情况,转向 1、2进行讨论
3.最高位等于9,加一后需要进位,这个1一定是开始的1,慢慢先前加进去的,说明这个数全是9,而最后的结果是1000000,这样的形式
所以只需要新定义一个数组,第一位数是1,其余是0,长度是原始数组长度加一。
public class Solution {/*** &#64;param digits a number represented as an array of digits* &#64;return the result*/public int[] plusOne(int[] digits) {// Write your code hereint n &#61; digits.length;for(int i&#61;n-1; i>&#61;0; i--) {if(digits[i] <9) {digits[i]&#43;&#43;;return digits;}digits[i] &#61; 0;}int[] newNumber &#61; new int [n&#43;1];newNumber[0] &#61; 1;return newNumber;}
}