数组元素加一

数组元素加一

要求:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。假设除了整数 0 之外,这个整数不会以零开头。
示例:
1、
输入:digits[1,2,3]
输出:[1,2,4]
2、
输入:digits[9,9,9]
输出:[1,0,0,0]
3、
输入:digits[0]
输出:[1]
思路
分三种情况讨论
1、元素没有9,比如[1,2,3]等等
2、元素中存在9,但不全是,比如[1,2,9]、[4,9,5]等等
3、元素全为9,比如[9]、[9,9]、[9,9,9]等等

import java.util.Arrays;
import java.util.Scanner;
/**
 * @author lihao
 * @Date 2022/4/13 20:44
 */
public class Solution {
    public static void main(String[] args) {
        System.out.println("请选择添加的数组元素的个数:");
        Scanner scan = new Scanner(System.in);
        int n=scan.nextInt();
        int[] arr=new int[n];
        for (int i = 0; i <arr.length; i++) {
            System.out.println("添加"+(i+1)+"个元素:");
            arr[i]=scan.nextInt();
        }
        //输出结果
        System.out.println(Arrays.toString(plusOne(arr)));
    }
    public static int[] plusOne(int[] digits){
        int len=digits.length;
        for (int i = len-1; i >=0 ; i--) {
        //当元素中存在9,但不全是,将当前位置0,继续遍历下一位
            if(digits[i]==9){
                digits[i]=0;
            }else{
            //当元素中不存在9,当前位+1,其余位不再发生变化,返回结果即可
                digits[i]+=1;
                return digits;
            }
        }
        //元素全为9时,增加数组长度,并将最高位置1
        int[] res=new int[len+1];
        res[0]=1;
        return res;
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
优化这段代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; import java.util.TreeSet; /** * @Author 陈平安 * @Date 2022/8/29 9:25 * @PackageName:PACKAGE_NAME * @ClassName: Main * @Description: TODO * @Version 1.0 */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] arr = new int[n]; // int m = scanner.nextInt(); //获取数据 // int sum = 0;///每组的和 // TreeSet map = new TreeSet();//利用其具有自动排序的功能 // ArrayList<Integer> list = new ArrayList<>();//储存待测数据 for (int j = 0; j < arr.length; j++) { // list.add(scanner.nextInt()); arr[j] = scanner.nextInt(); }//for循环获取数据 // scanner.close(); // System.out.println(Arrays.toString(arr)); int count = 0; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { count++; int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } System.out.print(count); //System.out.println(list.toString()); // for (int j = 0; j < list.size() - m+1; j++) {//遍历数据元素,记得要一,因为临界条件的值也有用处 // //******************************+1************************ // //System.out.println(j+" j"); // for (int k = j; k < j + m; k++) { // // sum += list.get(k); // } // map.add(sum); // // sum = 0; // sum = 0;//每m组循环以后记得置为空 // } // System.out.println(map.first());//第一个元素就是最小值 } }
03-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忆初0728

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值