加一(Java求解)
题目:
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 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,可分为两种情况:
- 除9之外的9种数字,加1后无需进位;
- 9+1=10,该位置零,然后前一个元素进位加1。
最主要的是要考虑99、999这种极端情况加1后变成100、1000,数组大小需要扩容一位。刚开始我想到Java提供了支持动态扩容的ArrayList类,查了好久ArrayList的用法(之前学的时候偷懒了,出来混果然都是要还的),后来看了一眼力扣上热度最高的题解,刚开始练习的我还是太菜了,根本用不到ArrayList。
题解如下:
算法:
数组中每个元素都为单个数字的非负整数,无非就是0、1、2、3、4、5、6、7、8、9,可分为两种情况:
- 除9之外的9种数字,加1后无需进位;
- 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求解)相关推荐
- java加载并运行虚拟机_《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?...
Java虚拟机是如何加载Java类的? 这个问题也就是面试常问到的Java类加载机制.在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样. ...
- jvm面试2 jvm如何加载java代码? JVM知识重点:内存模型和GC
jvm如何加载java代码? native方法forName0 JVM知识重点:内存模型和GC' 注意:jvm是一个内存中的虚拟机 下面是Class类中,我们常用的forName方法 @CallerS ...
- Java——求解一元n次方程(V1.0)
Java--求解一元n次方程(V1.0) 主要思路 通过 接口(interface) 进行求解方法声明,通过 implements 声明自己使用的接口 通过字符串 equals() 方法以及 whil ...
- 利用Java求解“鸡兔同笼问题”:鸡和兔在一个笼子里,共有腿100条,头40个,问鸡兔各有几只?
Java求解"鸡兔同笼问题" public class Jttl {public static void main(String[] args) {int jt = 0 ;whil ...
- win7ie11调用java失败,win7纯净版系统下ie11无法加载java插件
在win7纯净版系统中,我们会使用系统自带IE11浏览器来上网,最近有用户在使用IE11上网的时候无法加载java插件,导致网页无法全部显示,我们碰到这个问题应该怎么解决呢?下面给大家讲解一下win7 ...
- 链表之反转链表,万金油的解题方法(java求解)
链表之反转链表,一招鲜吃遍天(java求解) 内容目录 链表之反转链表,一招鲜吃遍天(java求解) 解题万金油 栗子1:反转整个链表 栗子2:反转某个区间内的链表 栗子3:按照k为一组,反转某个区间 ...
- Java求解一元二次方程+单元测试(IDEA+Junit)
介绍 环境配置 使用idea IDE 进行单元测试,首先需要安装JUnit 插件. 1.安装JUnit插件步骤 File–>settings–>Plguins–>Browse rep ...
- linux firefox applet,在HTTPS上的Firefox中加载Java Applet
我们开发了一个分析应用程序,它使用特殊的Java小程序(由IBM开发)来查看一些数据.这是一个在Apache上运行的Django应用程序.一切工作正常,直到我们转移到SSL.这种行为非常奇怪,我们感到 ...
- aes 256 cbc java,AES256加解密java语言实现
AES256加解密java语言实现 写在前面 基于项目安全性需要,有时候我们的项目会使用AES 256加解密算法.以下,是针对实现AES256 Padding7加密算法实现的关键步骤解析以及此过程遇到 ...
- 118.杨辉三角 java求解
118.给定list二维数组的杨辉三角 JAVA求解输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] class Soluti ...
最新文章
- [Voice communications] 看得到的音频流
- tf调不到keras怎么 回事_格力变频空调快速维修方法及技巧 空调压缩机不到一分钟就停,怎么回事?...
- ubuntu启动php-fpm_ubuntu安装php-fpm+xdebug
- html生成原理,Axure生成HTML的原理是什么?
- Python数据分析教程:Numpy 中不得不知的4个重要函数
- PreparedStatement跟Statement的对比
- FreeNAS 是什么
- TWaver初学实战——基于HTML5的交互式地铁图
- [洛谷P4720] [模板] 扩展卢卡斯
- ORACLE 数据库的级联查询 一句sql搞定(部门多级)
- VMware Fusion 虚拟网络配置
- 坚果pro官方固件_锤子坚果pro 官方3.6.0稳定版 精简流畅 Magisk授权-刷机之家
- 利用Google博客搜索查看加密QQ空间(qzone)日志
- 019-zabbix数据库表详解
- Win10 微软拼音添加小鹤双拼以及其他配置
- GIS地图点汇聚及空间搜索算法Java实现样例
- 2018蓝桥杯第几个幸运数(C语言)
- 我们编写的python代码在运行过程中_在 Rust 代码中编写 Python 是种怎样的体验?...
- JSP危险化学品管理系统myeclipse开发mysql数据库bs框架java编程jdbc详细设计
- Django Ajax总结
热门文章
- 腾讯Bugly的前世今生
- JVM -verbose参数详解
- 幸福课第11讲_笔记
- Centos下安装Pure-ftpd
- 计算机里的硬盘怎么隐藏,Win10系统如何隐藏“此电脑”中的某个本地磁盘
- 北京积分落户公示名单公布:华为笑傲榜单,来看落户最多的是哪些企业!
- 新存储、新格局、新飞跃,浪潮存储应时而来
- 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(二)kmeans...
- 郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.3 自组织特征映射神经网路(SOM)...
- 人的一生,到底在追求什么呢?