python(leetcode)-66加一问题
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2: 输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
看到题目觉得非常简单 只需要找到list的最后一个下标位置使其加一 即可。
然而天真如我 下面情况才是这题的重点
输入: [9,9,9]
输出: [1,0,0,0]
解释: 输入数组表示数字 999。
需要考虑进位的情况
重新思考:
笔者想到的是先将数组数字转为十进制数字,然后加一,接着按位取模得到每一位的值。
上代码(花费时间48ms)击败70%
import math
class Solution:
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
a=1
num=0
lens=len(digits)
for i in range(lens-1,-1,-1):
num=num+digits[i]*a
a=a*10 #获得list的十进制数字
num=num+1 bytes=int(math.log10(num)) #计算数字的位数
lens_new=bytes+1
result=[] for i in range(lens_new):
single=int(num/(10**(bytes-i))) #得到每一位的数字
result.append(single)
num=num-single*10**(bytes-i) #将得到的位数减去
return result if __name__=="__main__":
s=Solution()
a=[9,9,9]
print(s.plusOne(a))
然后举出比较正常的方法
思路:对每个值遍历判断,如果为9则变为0,并且继续遍历,如果为0到8则加1操作,并且break退出判断
上代码(用时44ms)击败98%
class Solution:
def plusOne(self,digits):
"""
:param digits:List[int]
:return:List[int]
"""
#
for i in range(1,len(digits)+1): #对每一个值遍历
if(digits[-i]==9): #如果为9则变为0
digits[-i]=0
else: #如果加1则退出
digits[-i]+=1
break
if(digits[0]==0): #如果全都是9那么第一位为1后面加一个0
digits[0]=1 #eg:[9,9,9] --> [1,0,0,0]
digits.append(0)
return digits
if __name__=="__main__":
s=Solution()
a=[5,9,8]
print(s.plusOne(a))
python(leetcode)-66加一问题的更多相关文章
- 前端与算法 leetcode 66. 加一
目录 # 前端与算法 leetcode 66. 加一 题目描述 概要 提示 解析 解法一 解法二 算法 # 前端与算法 leetcode 66. 加一 题目描述 给定一个由整数组成的非空数组所表示的非 ...
- Java实现 LeetCode 66 加一
66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示 ...
- Leetcode 66.加一 By Python
思路 如果单独操作最后一个元素,令其加一,满十进一,会挺麻烦的,要分情况. 所以我的思路是将list还原到字符串,再变成数值,直接+1,然后再还原到list.详见代码 代码 class Solutio ...
- [LeetCode]66. 加一(数组)
###题目 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 ...
- Leetcode——66.加一
@author: ZZQ @software: PyCharm @file: leetcode66_加一.py @time: 2018/11/29 16:07 要求:给定一个由整数组成的非空数组所表示 ...
- [LeetCode]66.加一(Java)
原题地址: plus-one 题目描述: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 ...
- leetcode 66.加一 python3
class Solution: def plusOne(self, digits): """ :type digits: List[int] :rtype: List[i ...
- LeetCode:加一【66】
LeetCode:加一[66] 题目描述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外 ...
- 【Leetcode】【简单】【66. 加一】【JavaScript】
题目描述 66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零 ...
随机推荐
- lumen框架学习01——引入自定义类和函数
引入自定义的functions.php文件,首先把functions.php文件放在app的目录下,然后通过根目录的composer.json文件引入,具体操作如下图: 引入类文件也是一样,具体可参考 ...
- hive 优化方法
https://blog.csdn.net/jiangsanfeng1111/article/details/52847044 -- 高级优化 使用各种函数hive>show functions ...
- sublime text2 安装及使用教程
1.下载安装包地址:https://www.sublimetext.com/2 2.安装,一直点下一步就好,将下列选项打钩,这样文件右键就可以直接用sublime text2打开 3.新建一个html ...
- vue中v-model动态生成的实例详解
每一行有一个input和一个select,其中行数是根据服务器返回的json数据动态变化的.那么问题来了,我们要怎样动态生成v-model? <template> <div> ...
- Python_day9
多继承: python支持,但不建议使用 dir(): 获取类或者对象的方法和属性 __mro__:获取类的继承顺序 class A(object): def run(self): print('ru ...
- shell awk处理过滤100万条数据
背景: 100万条数据.格式如下: ID 地址 1895756546931805 安徽省六安市裕安区固镇镇佛俺村柳树队5758 安徽省蒙城县岳坊镇胡寨村小组小胡寨庄6号 183494167409969 ...
- python线程的同步事件Event
Event对象: 用于线程间的通信,某个线程需要根据其他线程的状态来判断自己的下一步操作. Event内部定义了一个全局变量:_flag,默认为False. 当_flag = False时,会阻塞当前 ...
- 更改MAC地址,突破公司绑定MAC地址的限制
步骤/方法 1 打开开始菜单,选择控制面板. 2 3 打开控制面板项,选择网络和共享中心. 4 5 选择更改适配器设置. 6 7 选择本地要修改MAC地址的网卡. 8 9 右键该网卡, ...
- 深入浅出Git教程【转载】转载
深入浅出Git教程(转载) 目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1 ...
- python 队列结合线程的使用
from queue import Queue from threading import Thread import time q = Queue() def add_to_queue(): for ...