LeetCode(Java)—— 加一(简单)

news2024/11/26 1:22:21

加一

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

输入:digits = [1,2,3]
输出:[1,2,4]
 
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
 
输入:digits = [0]
输出:[1]

方法一:数组逆循环

思路:我们只需要对数组 digits 进行一次逆序遍历,判断最后一位是否为9,有则进入下一次循环,直到找到不为9加上1返回数组,若索引为0的那一位是9,则需要进行数组扩容,我们可以利用System中提供的arraycopy()方法,不需要for循环的方式将现有数组复制到扩容后的数组中。

话不多说,直接上代码

public static int[] plusOne(int[] digits) {
        for (int i = digits.length-1; i >= 0; i--) {
            if (digits[i] == 9){
                digits[i] = 0;
                //增加数组长度
                if (i==0){
                    int [] arr = new int[digits.length+1];
                    System.arraycopy(digits, 0, arr, 1, digits.length);
                    arr[0] = 1;
                    return arr;
                }
            }else {
                digits[i] += 1;
                return digits;
            }
        }
        return digits;
    }

测试:

    public static void main(String[] args) {
        int[] digits = {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9};
        int[] ints = plusOne(digits);
        System.out.println(Arrays.toString(ints));
    }

输出:

arraycopy()方法参数介绍:

public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

大白话总结:

  从源数组src取元素,范围为下标srcPos到srcPos+length-1,取出共length个元素,存放到目标数组中,存放位置为下标destPos到destPos+length-1。简单说,就是数组间的复制。

  • src 源数组;

  • srcPos 源数组中的起始位置;

  • dest 目标数组;

  • destPos 目标数组中的起始位置;

  • length 要复制的数组元素的数量

方法二:转成BigDecimal进行计算

注意:这里因为数组的长度是没有限制的,所以基本数据类型及其包装类的范围都是不够的。

class Solution {
    public int[] plusOne(int[] digits) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < digits.length; i++) {
            sb.append(digits[i]);
        }
        BigDecimal b1 = new BigDecimal(sb.toString());
        BigDecimal b2 = new BigDecimal("1");
        BigDecimal add = b1.add(b2);
        String s = add.toString();
        digits = new int[s.length()];
        for (int i = 0; i < digits.length; i++) {
            digits[i] = Character.getNumericValue(s.charAt(i));
        }
        return digits;
    }
}

测试:

    public static void main(String[] args) {
        int[] digits = {1,2,3};
        int[] ints = plusOne2(digits);
        System.out.println(Arrays.toString(ints));
    }

输出:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何设计一个API接口?

在日常开发中&#xff0c;总会接触到各种接口。前后端数据传输接口&#xff0c;第三方业务平台接口。一个平台的前后端数据传输接口一般都会在内网环境下通信&#xff0c;而且会使用安全框架&#xff0c;所以安全性可以得到很好的保护。这篇文章重点讨论一下提供给第三方平台的…

Python readline()和readlines()函数:按行读取文件

如果想读取用 open() 函数打开的文件中的内容&#xff0c;除了可以使用 read() 函数&#xff0c;还可以使用 readline() 和 readlines() 函数。和 read() 函数不同&#xff0c;这 2 个函数都以“行”作为读取单位&#xff0c;即每次都读取目标文件中的一行。对于读取以文本格式…

基于JAVA+SpringBoot+VUE的心理健康测试系统的设计与实现

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着现代社会的不断发…

写给小白,Python 爬虫学习思路

爬虫是Python是一个很经典的方向&#xff0c;大多数的小伙伴看到的是Python爬虫的就业效果&#xff0c;确实Python爬虫学习成本低&#xff08;学习快&#xff09;&#xff0c;就业效果好&#xff0c;特别适合新手入门&#xff0c;但是也要关注另外一个点&#xff0c;就是Python…

iTerm2 + Oh My Zsh 打造舒适终端体验

最终效果图&#xff1a; 因为powerline以及homebrew均需要安装command line tool&#xff0c;网络条件优越的同学在执行本文下面内容之前&#xff0c;可以先安装XCode并打开运行一次&#xff08;会初始化安装components&#xff09;&#xff0c;省去以后在iterm2中的等待时间。…

LeetCode 234. 回文链表 | C语言版

LeetCode 234. 回文链表 | C语言版LeetCode 234. 回文链表题目描述解题思路思路一&#xff1a;使用快慢双指针代码实现运行结果参考文章&#xff1a;[https://leetcode.cn/problems/palindrome-linked-list/solutions/1011052/dai-ma-sui-xiang-lu-234-hui-wen-lian-bia-qs0k/?…

这几款高效办公神器,职场大神都在用(建议收藏)

都快2023年了&#xff0c;还不知道怎么用网站来提高工作和生活质量&#xff1f;还不快搬好小板凳&#xff0c;听我来安利这几个实用网站&#xff01; 一、做图神器 1.创可贴&#xff1a;国内最火的在线设计工具 链接&#xff1a;https://www.chuangkit.com/designtools/desi…

基于深度学习的三维重建(一):三维重建简介、patchmatchNet环境部署、用colmap如何测试自己的数据集

目录 1.什么是三维重建 2.MVS是什么 3.传统MVS的局限性和为什么基于深度学习的MVS性能好于传统三维重建 4.基础概念 5. patchmatchNet环境配置 6.如何测试自己的数据集&#xff08;位姿计算&#xff09; 6.1 colmap导出位姿 6.2 将colmap位姿转换成MVS读取的数据格式 1.…

Linux安装Docker配置docker-compose 编排工具【超详细】

一、介绍Docker Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有…

面试官:什么是性能测试计划?(内含干货)

引言在进入今天的内容前&#xff0c; 先想几个问题&#xff1a;什么是测试计划&#xff1f;什么是性能测试计划&#xff1f;在你的性能知识领域中&#xff0c; 你认为性能测试计划应该包含哪些内容&#xff1f;因为作为企业的金牌面试官&#xff0c; 经过我面试的求职者&#x…

一文搞懂:JS严格模式“use strict”

什么是JS的严格模式 JS严格模式概念是在ES5中引入的&#xff0c;在此模式下&#xff0c;JS对语法的要求会变的严格&#xff0c;某些不太严谨的代码在严格模式下将不能运行。 如何启用严格模式 只需要JS代码的起始添加 "use strict"即可。如&#xff1a; "use…

Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)

Spring Boot邮件发送&#xff08;powernode CD2207&#xff09;&#xff08;内含教训视频源代码&#xff09; 教学视频源代码下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87452056 目录Spring Boot邮件发送&#xff08;powernode CD2207&…

图解LeetCode——1233. 删除子文件夹(难道:中等)

一、题目 你是一位系统管理员&#xff0c;手里有一份文件夹列表 folder&#xff0c;你的任务是要删除该列表中的所有 子文件夹&#xff0c;并以 任意顺序 返回剩下的文件夹。 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下&#xff0c;那么 folder[i] 就是 folder[j] …

Redis学习【4】之简单动态字符串

文章目录一 简单动态字符串 SDS1.1 SDS简介1.2 SDS结构1.3 SDS优势1.3.1 防止”字符串长度获取”性能瓶颈1.3.2 保障二进制安全1.3.3 减少内存再分配次数1.3.4 兼容C函数1.4 常用的 SDS 操作函数一 简单动态字符串 SDS 1.1 SDS简介 无论是 Redis 的 Key 还是 Value&#xff0…

《系统架构设计》-01-架构和架构师概述

文章目录1. 架构的基本定义1.1 架构组成理论1.1.1 系统元素1&#xff09;概念2&#xff09;静态结构和动态结构1.1.2 基本系统属性1.1.3 设计和发展原则1.2 架构的决策理论1.2.1 统一软件过程&#xff08;Rational Unified Process&#xff0c;统一软件过程&#xff09;1.2.2 决…

《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)

1.简介 上一篇文章中&#xff0c;从TestNg的特点我们知道支持变量&#xff0c;那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试。那么如何实现同时启动不同的浏览器对脚本进行测试&#xff0c;且听我娓娓道来。 2.项目实战 2.1创建一个TestNg class 1.首先按…

深入工厂|高精密多层板是如何被智造出来的?

或许有很多人从网络上见过各种教程&#xff0c;告诉你单层板是什么&#xff0c;多层板是什么&#xff0c;他们该如何做出来&#xff0c;但是在具体制造时却全凭想象&#xff0c;今天&#xff0c;就让我们来实地看看&#xff0c;精密的多层板是如何被制造出来的&#xff01;今天…

大数据---zookeeper集群搭建

zookeeper集群搭建 跳过安装jdk的方法就是找到安装jdk环境的虚拟机克隆 克隆之后的虚拟机根据台数直接修改ip地址&#xff0c;重新配置免密登录&#xff0c;确保每台机器能够互相连接&#xff0c;然后安装zookeeper 文章目录zookeeper集群搭建前期工作服务器划分修改hostname设…

【java】Spring Boot -- Spring AOP原理及简单实现

文章目录一、AOP基本概念1.1、Filter、Interceptor、AOP1.2、AOP中的一些概念1).通知&#xff08;Advice&#xff09;: AOP 框架中的增强处理。通知描述了切面何时执行以及如何执行增强处理&#xff1b;通知类型&#xff0c;主要有以下几种&#xff1a;2).连接点&#xff08;Jo…

Acwing---1246. 等差数列

等差数列1.题目2.基本思想3.代码实现1.题目 数学老师给小明出了一道等差数列求和的题目。 但是粗心的小明忘记了一部分的数列&#xff0c;只记得其中 N个整数。 现在给出这 N个整数&#xff0c;小明想知道包含这 N 个整数的最短的等差数列有几项&#xff1f; 输入格式 输入…