Plus One
2016-07-27 10:24
162 查看
leetcode第66题,数组模拟一个大数,数组高位代表数字的低位,计算这个大数加1。
第一思路,运用python中提供的各种转换函数,先把列表攒成一个数字,然后执行加1操作,最后在拆分成列表。这种方法比较简单,但是不好处理0开头的情况。
第二思路:直接进行大模拟,模拟进位加法,但是不好处理缺位的情况,比如[9]应该返回[1,0]
我采用了第二思路。
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
digits = digits[::-1]
n = len(digits)
if n == 0:
return [1]
add = 0
if digits[0]+1 >= 10:
add = 1
digits[0] = (digits[0]+1)%10
else:
add = 0
digits[0] += 1
for i in range(1,n):
if digits[i]+add >= 10:
digits[i] = (digits[i]+add)%10
add = 1
else:
digits[i] = digits[i]+add
add = 0
if add != 0:
digits.append(add)
return digits[::-1]
第一思路,运用python中提供的各种转换函数,先把列表攒成一个数字,然后执行加1操作,最后在拆分成列表。这种方法比较简单,但是不好处理0开头的情况。
第二思路:直接进行大模拟,模拟进位加法,但是不好处理缺位的情况,比如[9]应该返回[1,0]
我采用了第二思路。
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
digits = digits[::-1]
n = len(digits)
if n == 0:
return [1]
add = 0
if digits[0]+1 >= 10:
add = 1
digits[0] = (digits[0]+1)%10
else:
add = 0
digits[0] += 1
for i in range(1,n):
if digits[i]+add >= 10:
digits[i] = (digits[i]+add)%10
add = 1
else:
digits[i] = digits[i]+add
add = 0
if add != 0:
digits.append(add)
return digits[::-1]
相关文章推荐
- 二分查找总结
- iOS判断输入的字符是否都是中文
- jQuery resize 事件增强版
- OGL光照
- 浪祥电站调速器被改造
- dubbo环境搭建
- 单元测试框架Jasmine学习笔记
- 计算盒子模型的尺寸、display属性、块级和内联元素、浮动、overfloat
- Redis 发布订阅
- java 8 增强的工具类:Arrays
- DNS服务器
- 顺序表应用2:多余元素删除之建表算法
- 蓝点通用管理系统《三分钟入门》图文版
- 微信分享菜单栏显示,隐藏
- solr5.0.0的使用(—)
- POJ - 2823 Sliding Window (单调队列求解区间最值)
- 【C# DateTime】如何一次性修改DateTime的默认ToString格式
- Android自定义控件之基本原理(一)
- solr5.0.0的使用(二)
- Redis HyperLogLog