Leetcode 编程题:加一

Leetcode 编程题:加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。

在这里插入图片描述

解法1:像傻子一样的写条件判断

思路:
@首先从大范围分为9结尾的和非9结尾的:
非9结尾的数组最后一个元素+1返回数组即可
9结尾的:
判断是不是全是9:
是,要开辟新数组,长度比之前多1,新数组第一个元素存1,其余全0,返回arr。
否,说明数组长度不用改变:
从后往前遍历,是9就改为0,continue可要可不要。当不是9时,要给当前值加1并跳出循环
这是进位的原因。

class Solution {
    public int[] plusOne(int[] digits) {
           if(digits[digits.length-1]==9) {
        		int flag=1;
        		for(int x=0;x<digits.length;x++) {
        			if(digits[x]!=9) {
        				flag=0;
        				break;
        			}
        		}
        		if(flag==1) {
        			int [] arr=new int [digits.length+1];
        			arr[0]=1;
        			for(int x=1;x<arr.length;x++) {
        				arr[x]=0;
        			}
        			
        			return arr;
        		}else {
        			for(int x=digits.length-1;x>=0;x--) {
            			if(digits[x]==9) {
            				digits[x]=0;
            				//continue;
            			}else {
            				digits[x]++;
                            break;
            			}
        			}
    
        			return digits;
        		}
     
        }else {
        	
        		digits[digits.length-1]++;
        		return digits;
        }
    }
}

在这里插入图片描述

解法2:目的只想少做点本不需要的判断

相比较于第一种,少了无谓的判断
思路:
@直接从后往前遍历,当为9时置为0,否则+1跳出。

条件判断:当digits[0]==0,也就意味着数组元素是全为9的,那么开辟新数组,长度为之前+1
其第一个元素为1,其余 为0.返回该新数组arr,否则返回更新后的digits

int [] arr=new int [digits.length+1];
			for(int x=digits.length-1;x>=0;x--) {
	    			if(digits[x]==9) {
	    				digits[x]=0;
	    			}else {
	    				digits[x]++;
	    				break;
	    			}
			}
			if(digits[0]==0) {
				arr[0]=1;
				for(int x=1;x<arr.length;x++) {
    					arr[x]=0;
    				}
					return arr;
			}
			return digits;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值