题目:

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

数组中每个元素都为单个数字的非负整数,无非就是0、1、2、3、4、5、6、7、8、9,可分为两种情况:

  1. 除9之外的9种数字,加1后无需进位;
  2. 9+1=10,该位置零,然后前一个元素进位加1。

最主要的是要考虑99、999这种极端情况加1后变成100、1000,数组大小需要扩容一位。刚开始我想到Java提供了支持动态扩容的ArrayList类,查了好久ArrayList的用法(之前学的时候偷懒了,出来混果然都是要还的),后来看了一眼力扣上热度最高的题解,刚开始练习的我还是太菜了,根本用不到ArrayList。

题解如下:

算法:

数组中每个元素都为单个数字的非负整数,无非就是0、1、2、3、4、5、6、7、8、9,可分为两种情况:

  1. 除9之外的9种数字,加1后无需进位;
  2. 9+1=10,该位置零,然后前一个元素进位加1。

加1得10进一位个位数为0。加法运算如不出现进位就运算结束了进位只会是1

所以只需要判断有没有进位并模拟出它的进位方式,如十位数加1个位数置为0,如此循环直到判断没有再进位就退出循环返回结果。

然后还有一些特殊情况就是当出现 9999、999999 之类的数字时,循环到最后也需要进位,并且数组需要扩容一位,出现这种情况时需要手动将它进一位。

class Solution {public int[] plusOne(int[] digits) {for(int i=digits.length-1;i>=0;i--){digits[i]++;digits[i] %= 10;if(digits[i]!=0)//判断该位数字加1后对10取余数是否为0,实质上就是判断是否需要进位return digits;}/*数组大小扩容一位,99、999等全部需要进位加一的情况下会执行以下代码,也就是上面所说在极 端情况下的数组扩容并且手动进位,极端情况下全部数字都经过 加1置零,数组元素全部变成0, 所以不妨数组长度加1初始化(Java中int类型数组默认初始值为0)*/digits = new int[digits.length+1];digits[0]=1;return digits;}
}

作者:yhhzw
链接:https://leetcode-cn.com/problems/plus-one/solution/java-shu-xue-jie-ti-by-yhhzw/

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/plus-one

加一(Java求解)相关推荐

  1. java加载并运行虚拟机_《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?...

    Java虚拟机是如何加载Java类的?  这个问题也就是面试常问到的Java类加载机制.在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样. ...

  2. jvm面试2 jvm如何加载java代码? JVM知识重点:内存模型和GC

    jvm如何加载java代码? native方法forName0 JVM知识重点:内存模型和GC' 注意:jvm是一个内存中的虚拟机 下面是Class类中,我们常用的forName方法 @CallerS ...

  3. Java——求解一元n次方程(V1.0)

    Java--求解一元n次方程(V1.0) 主要思路 通过 接口(interface) 进行求解方法声明,通过 implements 声明自己使用的接口 通过字符串 equals() 方法以及 whil ...

  4. 利用Java求解“鸡兔同笼问题”:鸡和兔在一个笼子里,共有腿100条,头40个,问鸡兔各有几只?

    Java求解"鸡兔同笼问题" public class Jttl {public static void main(String[] args) {int jt = 0 ;whil ...

  5. win7ie11调用java失败,win7纯净版系统下ie11无法加载java插件

    在win7纯净版系统中,我们会使用系统自带IE11浏览器来上网,最近有用户在使用IE11上网的时候无法加载java插件,导致网页无法全部显示,我们碰到这个问题应该怎么解决呢?下面给大家讲解一下win7 ...

  6. 链表之反转链表,万金油的解题方法(java求解)

    链表之反转链表,一招鲜吃遍天(java求解) 内容目录 链表之反转链表,一招鲜吃遍天(java求解) 解题万金油 栗子1:反转整个链表 栗子2:反转某个区间内的链表 栗子3:按照k为一组,反转某个区间 ...

  7. Java求解一元二次方程+单元测试(IDEA+Junit)

    介绍 环境配置 使用idea IDE 进行单元测试,首先需要安装JUnit 插件. 1.安装JUnit插件步骤 File–>settings–>Plguins–>Browse rep ...

  8. linux firefox applet,在HTTPS上的Firefox中加载Java Applet

    我们开发了一个分析应用程序,它使用特殊的Java小程序(由IBM开发)来查看一些数据.这是一个在Apache上运行的Django应用程序.一切工作正常,直到我们转移到SSL.这种行为非常奇怪,我们感到 ...

  9. aes 256 cbc java,AES256加解密java语言实现

    AES256加解密java语言实现 写在前面 基于项目安全性需要,有时候我们的项目会使用AES 256加解密算法.以下,是针对实现AES256 Padding7加密算法实现的关键步骤解析以及此过程遇到 ...

  10. 118.杨辉三角 java求解

    118.给定list二维数组的杨辉三角 JAVA求解输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] class Soluti ...

最新文章

  1. [Voice communications] 看得到的音频流
  2. tf调不到keras怎么 回事_格力变频空调快速维修方法及技巧 空调压缩机不到一分钟就停,怎么回事?...
  3. ubuntu启动php-fpm_ubuntu安装php-fpm+xdebug
  4. html生成原理,Axure生成HTML的原理是什么?
  5. Python数据分析教程:Numpy 中不得不知的4个重要函数
  6. PreparedStatement跟Statement的对比
  7. FreeNAS 是什么
  8. TWaver初学实战——基于HTML5的交互式地铁图
  9. [洛谷P4720] [模板] 扩展卢卡斯
  10. ORACLE 数据库的级联查询 一句sql搞定(部门多级)
  11. VMware Fusion 虚拟网络配置
  12. 坚果pro官方固件_锤子坚果pro 官方3.6.0稳定版 精简流畅 Magisk授权-刷机之家
  13. 利用Google博客搜索查看加密QQ空间(qzone)日志
  14. 019-zabbix数据库表详解
  15. Win10 微软拼音添加小鹤双拼以及其他配置
  16. GIS地图点汇聚及空间搜索算法Java实现样例
  17. 2018蓝桥杯第几个幸运数(C语言)
  18. 我们编写的python代码在运行过程中_在 Rust 代码中编写 Python 是种怎样的体验?...
  19. JSP危险化学品管理系统myeclipse开发mysql数据库bs框架java编程jdbc详细设计
  20. Django Ajax总结

热门文章

  1. 腾讯Bugly的前世今生
  2. JVM -verbose参数详解
  3. 幸福课第11讲_笔记
  4. Centos下安装Pure-ftpd
  5. 计算机里的硬盘怎么隐藏,Win10系统如何隐藏“此电脑”中的某个本地磁盘
  6. 北京积分落户公示名单公布:华为笑傲榜单,来看落户最多的是哪些企业!
  7. 新存储、新格局、新飞跃,浪潮存储应时而来
  8. 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(二)kmeans...
  9. 郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.3 自组织特征映射神经网路(SOM)...
  10. 人的一生,到底在追求什么呢?