java数据结构与算法刷题-----LeetCode66:加一

Leetcode适合新手吗?0基础怎么较短时间得到算法&数据结构提升?揭秘大牛都在用的刷题工具!... 别再用leetcode无脑刷题了!刷题不应该量化为“刷多少道题”,对于刷题来说,永远不是追求数量的堆叠。你想,LeetCode 上的题难度不等,有简单、中等、困难。刷100道简单题倒是快,一个星期保证完事,但是有什么提高呢?刷100道难题更快,刷第一道,然后一直做不出来,看答案也看不懂,直接劝退。所以刷题一定要掌握一些技巧,因为刷题是一个系统性的工程,要有章法有规划的进行。看看ACM金牌选手自用的... 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路分析

看代码注释即可

  1. 代码
    在这里插入图片描述
class Solution {
    public int[] plusOne(int[] digits) {
        //如果不全是9,比如8999,那么每次正常遍历,返回digits即可
        for(int i = digits.length-1;i>=0;i--){//从后往前遍历,依次加一
            if(digits[i]+1 >= 10) {//如果+1是10,就赋值为0
                digits[i] = 0;
            }else {//否则就说明不用进位,直接+1返回digits
                digits[i]++;
                return digits;
            }
        }
        //如果是9999这种,每次都会+1变成10,digits = [0,0,0,0]
        //正确结果是digits[1,0,0,0,0]
        int[] ints = new int[digits.length + 1];
        ints[0] = 1;//第一个赋值为1,剩下默认为0
        return ints;
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
  4. 差分数组:对差分数组求前缀和即可得到原数组
  1. 用差值,作为下标,节省空间找东西。比如1900年到2000年,就可以定义100大小的数组,每个数组元素下标的查找为1900。
  2. 前缀和数组,对于数组 [1,2,2,4],其差分数组为 [1,1,0,2],差分数组的第 ii个数即为原数组的第 i-1 个元素和第 i个元素的差值,也就是说我们对差分数组求前缀和即可得到原数组
  1. 前缀和:假设有一个数组arr[1,2,3,4]。然后创建一个前缀和数组sum,记录从开头到每个元素区间的和。第一个元素是0。第二个元素,保存第一个和sum[1] = sum[0]+arr[0],第二个元素,保存第二个和sum[2] = sum[1]+arr[1]
  1. 栈解题思路:倒着入栈,双栈
  1. 倒着入栈:适用于出栈时想让输出是正序的情况。比如字符串’abc’,如果倒着入栈,那么栈中元素是(c,b,a)。栈是先进后出,此时出栈,结果为abc。
  2. 双栈:适用于实现队列的先入先出效果。一个栈负责输入,另一个栈负责输出。
LeetCode 第66题:加一 通过这次的算法探险,我们学会了如何处理数组中的进位问题。这个“加一”的问题虽然看似简单,却涉及到了很多有趣的细节。通过详细的讲解和示例,我们深入理解了加法运算中的进位处理逻辑。希望这篇文章能帮你更好地理解这道题目,如果有任何问题,欢迎留言讨论。 阅读详情

相关推荐

ENSP:小型企业网络拓扑设计

包含的技术:ospf、dhcp中继、ac+ap、vrrp+mstp、acl、浮动路由、静态路由、vlan划分

weixin_45921302的博客 1万+

java数据结构与算法刷题-----LeetCode21:合并两个有序链表

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846 思路分析 现在有两个链表,我们要将其合并为一个 最好不要改变原有链表,也就是最终合并结果,使用新的链表来保存 可以采用双指针的思路,而链表本身就是一个指针(指向自己并且保存自己的下一个元素) 所以,我们对比两个指针的值,小的就插入到新链表中...

殷志鹏的博客 1234

拌合楼管理软件开发(十一) 海康威视车牌识别摄像头安装调试,总算是跑通了。

/保存的文件个数这里之所以需要用到委托,直接更新textbox文本中的内容,以及复制picturebox的image会提示不是从齐创建的线程调用。

morsth的博客 4819

删除重复的电子邮箱

1、问题描述 编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。 2、 创建表格 代码 create table if not exists Person(Id varchar(8), Email varchar(255)); delete * from Person where 1=1; // truncate table Person; insert into Person (Id, Email) values( '1', 'john@ex

qq_45793102的博客 236

避坑指南:在Ubuntu 22.04上配置UR5e与ROS2 Humble真机通信的完整流程

本文详细介绍了在Ubuntu 22.04上配置UR5e机械臂与ROS2 Humble真机通信的完整流程,包括环境准备、网络配置、URCap安装、ROS2驱动部署及控制器状态验证等关键步骤。特别针对常见问题如网络连接失败、驱动启动错误等提供了实用解决方案,帮助工程师高效完成UR5e与ROS2的集成工作。

weixin_30790841的博客 465

如何利用CN3791实现太阳能电池板对锂电池的高效充电管理

本文详细介绍了如何利用CN3791芯片实现太阳能电池板对锂电池的高效充电管理。CN3791集成了MPPT(最大功率点跟踪)功能,能智能调节太阳能板的输出,确保在不同光照条件下获得最大功率。文章涵盖芯片工作原理、外围电路设计、充电全过程管理及实际应用经验,帮助开发者优化太阳能充电系统效率。

weixin_33709219的博客 499

Java求回文数的两种巧妙方法---LeetCode9 回文数

Java求回文数两种巧妙方法详解

Forever_xxx的博客 1454

linux cma alloc fail 问题分析

摘要:日志显示CMA连续内存分配失败(错误码-ENOMEM),请求128页(512KB)内存时因CMA区域不足或内存碎片导致失败。分析发现系统CMA总内存131072KB,空闲65536KB。解决方案包括:1)手动触发内存碎片整理;2)修改设备树或内核配置增大CMA区域(如从16MB增至20MB)。通过调整CONFIG_CMA_SIZE_MBYTES或设备树中的size参数可解决该问题。

陌上花开缓缓归以的博客 800

牛客Top200---最长回文字符串(java)

题目 题解:中心扩展法 描述:遍历,从左到右遍历,然后向两端扩展 假设每个字符都是回文串最中心的字符,从中心字符向两边扩展,若左右字符不同则他就不会是回文串。 回文字符串需要分情况考虑,分奇偶两种情况,为奇数是i==i,然后向两边扩展,当为偶数时,先判断 i ==i+1 字符是否一样,一样则向两边扩展,否则他就不可能是回文串。 最后回文长度就是right - left -1,这个可以举两个例子 import java.util.*; public class Solution { publi

小样yx的博客 1961

【LDPC-7】LLR量化位宽对LDPC译码性能的影响分析——以最小和译码算法为例进行matlab仿真

最小和译码算法的步骤如下:最后译码结果如果满足或者完成所有迭代次数,则译码算法停止迭代,否则继续进行译码迭代操作。

FPGA/MATLAB学习教程/源码/项目合作开发 1471

核心组件大换血:Backbone与Neck魔改篇:YOLO26结合StarNet结构:2026星状网络在YOLO生态的即插即用实战

本文将介绍如何将StarNet作为Backbone替换YOLO26原生架构,以提升边缘设备上的目标检测性能。文章首先分析了YOLO26在特定场景下的精度瓶颈,指出其通用Backbone设计存在不足。随后深入解析StarNet的核心创新——星操作(Star Operation),这一低维计算却能获得高维特征表达的数学魔术,以及其极简的StarBlock模块设计。通过对比YOLO26原生架构的三大创新与痛点,作者提出两种替换策略:完整替换Backbone或局部替换+Neck联调。文中提供了StarNet核心代码

ZDQ58818的博客 290

java实现回文数算法

注意:上述代码假设输入的num是非负整数。如果输入的num是负数,则需要先将其转化为非负整数再进行比较。也可以将负数直接判断为非回文数。

小筱在线博客 608

23、视频时间码与数字同步技术详解

本文深入解析了视频时间码与数字同步技术的核心原理及应用。涵盖线性时间码(LTC)和垂直间隔时间码(VITC)的结构与特性,详细阐述了降帧时间码的补偿机制及其在影视制作中的重要性。文章还介绍了定时参考信号(TRS)在SDTV和HDTV中的实现方式,分析了辅助数据的传输结构与发展趋势,并探讨了SDI编码技术及其在不同视频标准下的差异。通过实际应用场景和技术发展影响的剖析,全面展示了这些关键技术如何支撑现代视频系统的高效运行与持续创新。

wine的专栏 239

力扣66. 加一

摘要:本文介绍了LeetCode上"加一"问题的两种解法。方法一采用暴力破解思路,通过将数组转换为整数(使用BigInteger防溢出)、加一后再转回数组,适用于数字位数较少的情况。方法二更高效,通过逆序遍历处理后缀9:若末尾非9则直接加一;若有连续9则将其置零并在第一个非9位加一;全为9时返回首位1的新数组。两种方法均能正确处理各种边界情况,方法二避免了类型转换,性能更优。文末还提供了Java中BigInteger类的常用方法说明。

AffectionGF的博客 1094

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

耗时3个月,近10W字的刷题笔记,多语言通吃,秒杀 80% Leetcode 题目!

学会了,offer收割机就是你~

Jack-Cui 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode 算法刷题目录 (Java)

保存自己的刷题纪录,方便以后复习。

代码星辰的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数据结构——LeetCode刷题:7. 整数反转,66. 加一,1. 两数之和

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以假设除了整数 0 之外,这个整数不会以零开头。最高位数字存放在数组的首位, 数组中每个元素只存储。如果反转后整数超过 32 位的有符号整数的范围。数组所表示的非负整数,在该数的基础上加一。给你一个 32 位的有符号整数。整数,并返回它们的数组下标。中的数字部分反转后的结果。你可以按任意顺序返回答案。,请你在该数组中找出。

u014114223的博客 1259

LeetCode刷题集——66.加一

66.加一 题目概述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。 示例1 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例2 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/pl

qq_43069447的博客 274

LeetCode 66. 加一

@LeetCode 66. 加一 LeetCode 66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 解题思路 非负整数加一的题其实和长整数的加法类似,其难度在于处理进位。所以当然要有进位标志了,将数组从后往前遍历,每次都给数组当前位的元素加a和cou...

肉肉的大果果 232

LeetCode 66. 加一 java

LeetCode 66. 加一 java 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: ...

lele的专栏 369

LeetCode:第66题 加1 C语言实现 2020.2.4

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例2: 输入: [4,3,2,1] 输出: ...

weixin_42072280的博客 609

Java实现 LeetCode 66 加一

66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元...

5381

力扣66题“加一”详解:从数组模拟到进位逻辑的算法基本功

在数组与进位算法这类基础编程问题中,如何高效地处理逐位加法并规避数据溢出是开发者常遇到的痛点。本文从数据结构视角剖析数组模拟数字的原理,逐步推导从低位到高位的进位逻辑,并分析了全9边界情况下新建数组的优化策略。这一思路在版本号自增、十进制/二进制求和等场景中具有通用价值。围绕力扣66题“加一”,文章总结了时间复杂度与空间复杂度的严谨分析,以及面试中常见的变形追问,帮助开发者夯实算法基本功。

weixin_32612263的博客 54

NVIDIA Profile Inspector 驱动调优指南:3 次点击跑通首次配置,附备份与脚本技巧

你正玩得最入迷时快速甩镜头,画面中间裂开一道横缝;打开 NVIDIA 控制面板翻遍"管理 3D 设置",能动的选项却屈指可数。NVIDIA Profile Inspector 驱动调优就是为这种情况准备的:它直接读写驱动内部的游戏配置档案数据库,把控制面板里看不到的隐藏参数一并摊开给你调。它不超频、不碰硬件、不改游戏文件,只动驱动层的参数档案。适合控制面板选项不够用的进阶玩家、被撕裂和延迟困扰的射

gitblog_00497的博客 498

【LeetCode】[66] 加一

思路很重要!不要急于做题,要静下几分钟用于思考其内在的逻辑。第一个思路想把数组加一转换到数字的维度上,以为可以避免数组中十进制的复杂,但是在数字维度上就带来了int型32位的溢出问题,所以放弃了思路一。下面是思路二的java实现,只要思路清晰,就很简单。 /* * @lc app=leetcode.cn id=66 lang=java * * [66] 加一 * * https://le...

Watson的博客 269

蓝桥与力扣刷题(66 加一)

题解:https://leetcode.cn/problems/plus-one/solutions/4481/java-shu-xue-jie-ti-by-yhhzw/)后并根据作者的解题思路,编写出了相应的解题代码。注明:该题最初我只理解了题目意思中的加一,并未联想到是模拟了加法运算中的进位操作。由此,我查看了评论区中大佬的题解思路(引用评论区 作者---最高位数字存放在数组的首位, 数组中每个元素只存储。数组所表示的非负整数,在该数的基础上加一。输入数组表示数字 4321。输入数组表示数字 9。

旧栎 572
上一篇: java数据结构与算法刷题-----LeetCode35:搜索插入位置
下一篇: java数据结构与算法刷题-----LeetCode67:二进制求和
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值