算法一(加一)

执行代码及结果:

 思路

         该题数组末位加一输出结果应该考虑三种情况:

       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));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值