Plus One
Plus One
https://leetcode.com/problems/plus-one/
Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
算法描述
这个题目需要注意的地方是假设数组的长度是n,那么一个数的最高有效位是数组的第0个数,数组的最低有效位是数组的第n-1个数。
- new一个ArrayList为resDigits
- 按照n-1, n-2, ..., 0这样的顺序读取数组的值,首先将第n-1个数和1相加值为sum
- 如果有进位(也即sum == 10),那么resDigits就加个0元素,接着原数组余下元素,即第n-2, n-3, ..., 0位的数值跳到步骤2)继续执行;
如果没有进位,那么resDigits就加上sum,并且数组的余下元素也加到resDigits中 - 因为得到的resDigits的第0个数是最低有效位,因此按照题目的要求,把resDigits倒过来。
程序代码
public class Solution {
public int[] plusOne(int[] digits) {
int length = digits.length;
if (digits == null || length == 0) {
return null;
}
List<Integer> resDigits = new ArrayList<Integer>();
int n = digits.length - 1;
Boolean flag = true;
do {
if (flag) {
int sum = digits[n--] + 1;
if (sum == 10) {
resDigits.add(0);
flag = true;
} else {
resDigits.add(sum);
flag = false;
}
} else {
resDigits.add(digits[n--]);
}
}while(n >= 0);
if (flag) {
resDigits.add(1);
}
int[] newDigits = new int[resDigits.size()];
for (int i = resDigits.size() - 1; i >= 0; i--) {
newDigits[newDigits.length - 1 - i] = resDigits.get(i);
}
return newDigits;
}
}
随机推荐
- Orleans之Hello World
接触Orleans 有一段时间了,之前也翻译了一系列官网文档,今天我们就来一个实际的例子,来看看到底如何用这个东西来开发项目,当然经典的也是醉人的,我们就从HelloWorld开始吧. 通过前面的知识 ...
- MVC+EF+esayui初试(一 布局加菜单显示)
最近都在做linq+ext.net的开发.这两天想学习下MVC和ef,刚好,在看ext.js的时候也喜欢上了esayui,所以就想用mvc+ef+esayui做一个汽车网后台管理来加强下.在这里也把我 ...
- 关于SqlServer2012本地帮助文档安装失败问题
由于本人在前一段时间安装了SqlServer2012,安装后没有自带本地帮助文档,因为新的数据库版本微软捆绑了一个本地帮助文档查看器软件,所以在这个软件里面选择联机安装的时候,总是下载不成功,原因你们 ...
- RSA密钥——JAVA与C#的区别和联系
PS:好久没写博了,最近在考虑以后的事情,而且手上杂事也比较多,终于得空来写两篇. 首先感谢:http://www.codeproject.com/Articles/25487/Cryptogra ...
- [moka同学代码]PHP初级知识:上传文件源码
1.目录结构
- ajax案例源码
html文件中demo2_index.html ---------------------------------------------------------------------------- ...
- TCMalloc优化MySQL、Nginx内存管理
TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员. 与标准的glibc库的Malloc相比,TCMalloc库在内存 ...
- double 类型转化为Integer类型 ---DecimalFormat
假设x是你要转换的double类型变量: 不进行四舍五入操作: (int)x 进行四舍五入操作: Integer.parseInt(new java.text.DecimalFormat(" ...
- swift学习笔记之-错误处理
//错误处理 import UIKit /*错误处理(Error Handling):响应错误以及从错误中恢复的过程 在 Swift 中,错误用符合ErrorType协议的类型的值来表示.这个空协议表 ...
- JS中检测数据类型的四种方法
1.typeof 用来检测数据类型的运算符->typeof value->返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."st ...