Leetcode_66_Plus One
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41652987
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.
思路:
(1)题意:给定一非负整数,将其当做一个包含数字的数组来看待,求对其"加1"后所得到的数组。
例如数字999对应于数组[9,9,9],那么“加1”后得到的数组为[1,0,0,0]。
(2)题目主要考察的是进位问题。特别是数组第1个元素”加1“后可能产生进位的问题,这时就需扩充数组。
(3)首先,从后往前遍历数组,先对“个位”加1进行判断,如果“加1”后所得整数不大于9,则无进位产生,个位加1后返回;
其次,如果个位产生进位,就需要改变标志位flag,并对后续位数进行判断,只要后续位产生进位,就改变flag,不产生进位则加1后返回;
最后,遍历完成后需通过flag对最高位进行判断,如果最高位大于9,说明最高位产生了进位,此时需调整数组大小,并将新数组的最高位置为1。
算法代码实现如下所示:
public static int[] plusOne(int[] digits) {
if (digits.length == 0)
return null;
int len = digits.length;
int flag = 0;
for (int i = len - 1; i >= 0; i--) {
if (i == len - 1) {
if (digits[i] + 1 > 9) {
digits[i] = digits[i] + 1 - 10;
flag = 1;
} else {
digits[i] = digits[i] + 1;
break;
}
continue;
}
// 从倒数第二个开始
if (digits[i] + flag > 9) {
digits[i] = digits[i] + 1 - 10;
flag = 1;
} else {
digits[i] = digits[i] + 1;
flag = 0;
break;
}
}
//遍历完成后,如果flag为1说明最后遍历的数字大于10,需扩充数组
if (flag == 1) {
int[] result = new int[len + 1];
result[0] = 1;
for (int i = 0; i < len; i++) {
result[i + 1] = digits[i];
}
return result;
}
return digits;
}
Leetcode_66_Plus One的更多相关文章
随机推荐
- 原生JS模拟百度搜索关键字与跳转
<style type="text/css"> *{ margin: 0; padding: 0; } #text{ width: 300px; height: 30p ...
- print语句中逗号(,)和反斜杠(\)的区别
逗号结尾: 禁止输出换行反斜杠结尾:强制输出换行 >>> print ('A','B') #用一个逗号结尾就可以禁止输出换行 A B >>> print ('A ...
- R语言do.call 函数用法详解
虽然R语言有类型很丰富的数据结构,但是很多时候数据结构比较复杂,那么基本就会用到list这种结构的数据类型.但是list对象很难以文本的形式导出,因此需要一个函数能快速将复杂的list结构扁平化成da ...
- Python实现爬取需要登录的网站完整示例
from selenium import webdriver dirver = webdriver.Firefox() dirver.get('https://music.douban.com/') ...
- Tomcat中的c3p0数据库连接池的释放
一个项目通过c3p0获得连接池,相关代码如下: public class JdbcUtil { // 连接池的核心类 private static ComboPooledDataSource data ...
- leetcode之Find All Numbers Disappeared in an Array
问题来源:Find All Numbers Disappeared in an Array 很久没有刷题了,感觉大脑开始迟钝,所以决定重拾刷题的乐趣.一开始不要太难,选一些通过率高的题目做,然后就看到 ...
- hibernate5学习之理解数据库级并发
本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50551741 当我们谈起隔离的时候,我们总是假定两个物体直接要么隔 ...
- Dynamics CRM 打开数据加密报错及修改用户邮件保存报错的解决方法
在项目里会碰到在修改用户的电子邮件时报错的问题 然后跑到数据管理里打开数据加密又是报错 解决上述问题只需要做下数据库的更改即可,把标志位置1即可,记得要重启下IIS才能生效 SELECT [Colum ...
- hive高阶1--sql和hive语句执行顺序、explain查看执行计划、group by生成MR
hive语句执行顺序 msyql语句执行顺序 代码写的顺序: select ... from... where.... group by... having... order by.. 或者 from ...
- iOS应用启动时间
转自:iOS 知识小集 如果我们想知道程序启动的时间,则可以在工程的scheme中添加环境变量DYLD_PRINT_STATISTICS,如图1所示.这样在调试时,可以在控制台打印出程序启动过程中各个 ...