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的更多相关文章
随机推荐
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- CustomYieldInstruction 自定义中断指令
ActionScript3脚本引擎为了方便热更新逻辑开发,提供的从脚本继承Unity类库功能在一些情况下可以提供开发的便利. 这次来建立一个示例,演示一下如何在脚本中自定义协程中断指令 Unity中的 ...
- PHP MySQL Delete
DELETE 语句用于从数据库表中删除行. 删除数据库中的数据 DELETE FROM 语句用于从数据库表中删除记录. 语法 DELETE FROM table_name WHERE some_col ...
- 安卓高级Fresco图片框架的时候
Fresco:2015FaceBook推出的 及其强大 支持webp图片格式 和渐进式图片加载 中文文档 使用方法 引入依赖 点击查看具体教程 基本使用步骤 在布局中使用其标签 <com.fac ...
- iOS开源加密相册Agony的实现(三)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- MFC误报内存泄露的修复
在debug状态退出程序的时候,VS会在输出窗口列出可能的内存泄露的地方. MFC中使用DEBUG_NEW能够更方便的定位泄露的地点.但假如MFC的dll释放""过早"& ...
- 20160214.CCPP体系详解(0024天)
程序片段(01):CGI.c 内容概要:CGI-cloud #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main01(vo ...
- Android 5.0新控件——FloatingActionButton(悬浮按钮)
Android 5.0新控件--FloatingActionButton(悬浮按钮) FloatingActionButton是5.0以后的新控件,一个悬浮按钮,之所以叫做悬浮按钮,主要是因为自带阴影 ...
- android M Launcher之数据库实现
前面一系列文章我们分析了LauncherModel的工作过程,它会把数据绑定到桌面上.从今天开始我们来分析下Launcher的数据来源即Launcher数据库的实现. 一个完整的数据库实现都应该包括两 ...
- 全废话SQL Server统计信息(2)——统计信息基础
接上文:http://blog.csdn.net/dba_huangzj/article/details/52835958 我想在大地上画满窗子,让所有习惯黑暗的眼睛都习惯光明--顾城<我是一个 ...
- nginx平台初识(一)
众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧. nginx在启动后,在unix系统中会以daemon的方式 ...