赞
踩
执行代码及结果:
思路:
该题数组末位加一输出结果应该考虑三种情况:
1. 当数组末位不为9时,数组末位元素+1直接输出
2.当只有数组末位元素为9而前一位元素不为9时,它会向前一位进一位,末位元素归0,前一位元素加一
3.当所有元素都为9时数组长度+1,首位元素为1,其他元素为0.
总代吗:
- import java.util.Scanner;
-
- class Solution {
- public int[] plusOne(int[] digits) {
- for(int i=digits.length-1;i>=0;i--)
- {
-
- digits[i]=digits[i]+1;
- // 注意 if(digits[i]%10!=0)return digits;写法是错误的
- digits[i]=digits[i]%10;
- //如果末位元素不为9使用return结束循环直接返回末位元素加1的数组,所以执行下一次循环说明原数组前一个元素为9
- if(digits[i]!=0)return digits;
- //如果第一次循环后没有退出循环说明末位元素为9,此后依次对前一个元素+1求余判断是否超过0
- }
- //如果for循环都遍历完了说明数组中所有元素都是9,此时创建一个长度比原来数组长度多一的数组,首位为1,其余为0
- digits=new int[digits.length+1];
- digits[0]=1;
- return digits;
- }
- public static void main(String []args) {
- int []digits=new int[100];
- @SuppressWarnings("resource")
- Scanner input=new Scanner(System.in);
- String ar=input.nextLine().toString();
- ar=ar.replace('[',' ');
- ar=ar.replace(']',' ');
- String[]arr=ar.split("\\s+");
- for(int i=0;i<arr.length;i++) {
- digits[i]=Integer.parseInt(arr[i]);
- }
- Solution a=new Solution();
-
- System.out.println(a.plusOne(digits));
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。