当前位置: 首页 > news >正文

力扣代码学习日记六

Problem: 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

解题方法

对表示数字的数组进行加一操作。如果数组最后一位不是9,则直接加一;如果是9,则需要连续进位。如果所有位都是9,则在数组最前面插入1。

复杂度

时间复杂度:O(n)

这里的 n 是输入数组 digits 的长度。

在最坏的情况下,即数组中的每个元素都是9,我们需要遍历整个数组来将所有的9变成0,并在数组的开头插入一个1。所以时间复杂度是线性的,即 O(n)。

空间复杂度:O(1)

我们没有使用与输入数组长度成比例的额外空间。操作是在输入数组上直接进行的,除了在所有数字都是9且需要在数组前面添加一个新的1的情况下。

在那种特殊情况下,我们创建了一个新的数组,这个数组比输入数组多一个元素,但是这并不影响空间复杂度的常数阶,因此空间复杂度依然是 O(1)。

代码

class Solution(object):def plusOne(self, digits):# 从数组末尾开始向前遍历for i in range(len(digits) - 1, -1 ,-1):if digits[i] < 9:digits[i] += 1 # 如果该位小于9,直接加1后返回数组return digitsdigits [i] = 0  # 如果该位等于9,置为0并继续循环# 如果所有位都是9,需要在数组最前面插入1return[1] + digits
class Solution(object):def plusOne(self, digits):for i in range(len(digits)-1,-1,-1):if digits[i] !=9:digits[i] +=1return digitselse:digits[i] = 0digits.insert(0,1)return digits
http://www.lryc.cn/news/305071.html

相关文章:

  • 「Python系列」Python标准库
  • 虚拟列表【vue】等高虚拟列表/非等高虚拟列表
  • 【MySQL】如何理解索引(高频面试点)
  • NXP实战笔记(四):S32K3xx如何产生中心对称三相六路波形
  • 关于uniapp H5应用无法在触摸屏正常显示的处理办法
  • Stable Diffusion 3 发布,AI生图效果,再次到达全新里程碑!
  • 单例模式怎样实现单例(独例)?
  • MySQL——基础内容
  • node 之 初步认识
  • css复习
  • HTML5和CSS3提高
  • 感受2024生物发酵展示会-明章机械
  • 算法打卡day1|数组篇|Leetcode 704.二分查找、27.移除元素
  • 什么是高阶组件
  • python实现裂区试验方差分析
  • Vue v-for、v-if、v-show常见问题
  • GPT技术在学术研究中的革命性应用:开启论文创作新篇章
  • 【K8s】-- 描述容器中 pod 的状态
  • 使用yolo-seg模型实现自定义自动动态抠图
  • FairyGUI × Cocos Creator 3.x 场景切换
  • 【Java程序设计】【C00288】基于Springboot的篮球竞赛预约平台(有论文)
  • textbox文本框跨线程写入,扩展textobx控件
  • 【踩坑】PyTorch中指定GPU不生效和GPU编号不一致问题
  • 线性代数:向量、张量、矩阵和标量
  • WordPres Bricks Builder 前台RCE漏洞
  • 渗透测试—信息收集
  • 安卓adb调试备忘录
  • 【软件架构】01-架构的概述
  • Vue 图片轮播第三方库 介绍
  • 设置主从复制时发生报错Could not find first log file name in binary log index file‘;解决方案