当前位置: 首页> 房产> 建筑 > Leetcode 66. 加一

Leetcode 66. 加一

时间:2025/7/8 21:18:39来源:https://blog.csdn.net/li_yizhixiaowukong/article/details/140601574 浏览次数:6次

Leetcode 66. 加一

Leetcode 66. 加一

  • 一、题目描述
  • 二、我的想法
  • 三、其他人的题解

一、题目描述

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。

示例 3:
输入:digits = [0]
输出:[1]

提示:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9

二、我的想法

1.最开始的想法是将所有数字转成字符串,字符串转成数字类型之后加一,然后再转成列表类型。但是没写哈哈。
2.后来想到的是我干脆在列表里操作,用单指针。先将最后一位的数字 +1,使指针指向它。如果加一后变为 10 了,就进入循环操作:将 10 改成 0 ,指针前移一位;
(1)如果前移之后指向 0 之前了,说明列表应该从 “999” 变为 “1000” 了,即需要在列表最前端加一个数字 1;
(2)如果前移之后之后没有指向 0 之前,那就正常将数字 +1 就可以了。

class Solution:def plusOne(self, digits: List[int]) -> List[int]:digits[-1] += 1digitsLen = len(digits) - 1while digits[digitsLen] == 10:digits[digitsLen] = 0digitsLen -= 1if digitsLen != -1:digits[digitsLen] += 1else:digits[0] = 0digits.insert(0, 1)return digitsreturn digits

三、其他人的题解

Hushด้้้ 的题解 python纯小白写法,只有歪门邪路,不考虑任何效率,这个就是转成字符串之后再操作的。

class Solution:def plusOne(self, digits: List[int]) -> List[int]:s = '' l = []for i in digits:s = s + str(i) #全部转换成字符串for n in str(int(s) + 1): #字符串转换成int类型然后+1,再遍历字符串 添加到数组l.append(int(n))return l
关键字:Leetcode 66. 加一

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: