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的更多相关文章
随机推荐
- Linux设置文件读写权限
设置文件夹的读写权限: sudo chmod -R 777 /data 权限码描述 sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读 ...
- oh forever love~
npm install -g forever forever start c9sdk/server.js --listen 0.0.0.0 --port 80 -a aa:111 -w ~ To el ...
- 带有进度条的WebView
带有进度条的WebView 本篇继于WebView的使用 效果图 自定义一个带有进度条的WebView package com.kongqw.kbox.view; import android.con ...
- Android 动态加载(防止逆向编译) jar混淆加密
最近工作中接到了一个研究防止逆向编译的任务.研究了几天资料,最后基本实现了防破解技术,在这个工程中,也略有一些心得体会,现整理下来分享,供大家探讨参考研究.文中如有纰漏.失实之处,请大家及时给与指正. ...
- Scala:提取器(Extractor)
http://blog.csdn.net/pipisorry/article/details/52902671 提取器是从传递给它的对象中提取出构造该对象的参数. Scala 标准库包含了一些预定义的 ...
- [django]urls.py 中重定向
Django 1.5 有时候需要对一个链接直接重定向,比如首页啥的重定向到一个内容页等等,在views.py 中可以设定,如果没有参数啥的在urls.py 中设定更加方面 from django.vi ...
- 22 Notification 通知栏代码
结构图: MainActivity.java package com.qf.day22_notification; import android.app.Activity; import androi ...
- Dynamics CRM 非声明验证方式下连接组织服务的两种方式的性能测试
今天看了勇哥的博文"http://luoyong0201.blog.163.com/blog/static/1129305201510153391392/",又认识到了一种新的连接 ...
- 1.Cocos2d-x-3.2编写3d打飞机,粒子管理器代码
Cocos2d-x中的一个单例效果: #ifndef __Moon3d__ParticleManager__ #define __Moon3d__ParticleManager__ #inclu ...
- lager_transform未定义错误
lager_transform未定义错误rebar编译时报错:D:\server\six>d:/tools/rebar/rebar.cmd compile==> mysql (compil ...