Leetcode笔记整理—easy篇—66.Plus one

【Leetcode66 -加一 Plus One】 (C语言) 目录 加一Plus One 测试单元 题目分析 (1)思路清晰版 (2)灵机一动版本 大功告成 加一Plus One 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入... 阅读详情

问题描述:

Given a non-empty array of digits representing a non-negative integer, plus one to the integer.

The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.

You may assume the integer does not contain any leading zero, except the number 0 itself.
Example 1:

Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

分析:

本题是一个对数组进行操作的题目,而题目最大的难点其实在于对于题目背景与题目本身算法这两件事情之间的分离,题目给出的背景是将一个整数的各位数字转化为数组对应的各个元素,给出这一数组,要求对数组的最后一个元素数加一,且符合整数运算的进位规则。
而这里面隐藏着一个十分容易误犯的思维误区:就是还原的原始的整数。
这种算法的思路就是将给定数组还原成原始整数对其加一再将其切片,转回数组并传回。
但实际操作之后我们不难发现,这一算法虽然好想,但却伴随着几个十分致命的问题:

  • 空间问题。由于传入数组大小不一,若数组位数过长,则就需要一个很大的变量来存储转换完成的的整数,空间占用巨大。
  • 时间问题。由于在算法的最后需要将整数在重新切片转化成数组,而这就必须牵扯到除、余操作,势必会浪费大量的时间。
  • 异常问题。由于进位和首位含零的特殊情况的影响,对于异常的处理就会变得非常复杂,设计难度直线提升。

综上,我们不难看出,在算法设计的初期必须要严谨的分析问题的实质和特征,一旦以错误的思路开始设计不仅劳民伤财,甚至最后都有可能无法完成任务。
而对于本题来讲,回到刚才那个问题,本题实际是一个对于数组元素进行操作的问题,无需整数的参与;所以我们可以这样思考:(注意,以下涉及剧透( • ̀ω•́ )✧)

Xmind友情赞助
通过上面的图片我们基本明确的思路,那么剩下的的就是兑现代码了,以下是我的实现思路:

int* plusOne(int* digits, int digitsSize, int* returnSize) { 
		int * ret = 0;//需返回数组
		int i = 0,j = 0;

		for(i = digitsSize-1; digits[i] == 9; i--){//倒叙查9的个数,并进位
			digits[i] = 0;
		}
		if(i>=0){//非全9的情况
			*returnSize = digitsSize;
			ret=(int *)malloc((digitsSize)*sizeof(int));
			digits[i]++;
			for(i = 0; i < digitsSize;i++){
					ret[i] = digits[i];
			}
			return ret;
		}
		if(i < 0){//全9的情况
			*returnSize = digitsSize+1;//数组长度增长
			ret=(int *)malloc((digitsSize+1)*sizeof(int))+1;
			ret[0] = 1;
			for(i = 1; i < *returnSize;i++){
				ret[i] = 0;
			}
			return ret;
		}
		return ret;//防误报
}

结果
通过提交结果我们不难看到,纯数组操作取得了比较好的结果,也进一步印证了在算法实现之前要充分考虑到数据结构的特征和优势,而不是一味依照第一感觉行事。
本次就不展示其他大神的代码了,看了一下大同小异,只要能跳出那个误区本题基本都能获得优秀的实现结果。
最后,希望诸位能从我的总结中有所收获。

OpenClaw进行安全测试(附使用场景案例) test-master 是一个全面的测试专家,覆盖功能测试、性能测试、安全测试三大领域。这里我们重点来看下使用test-master如何进行安全测试。使用 test-master 时,可以针对以下高频领域进行专项安全扫描:✅ OWASP Top 10 测试✅ SQL 注入测试✅ XSS 测试✅ CSRF 测试✅ 认证 / 授权测试。 阅读详情

相关推荐

【Spreadsheet】香港规范结构设计电子表格库开发方案

深入理解香港本地规范特点和要求结合国际先进标准(Eurocode) 的技术内容考虑香港地理环境特殊性 (台风、地质等)建立完善的质量控制体系保持持续更新维护的能力。

hmywillstronger的博客 1361

[LeetCode] Plus One - 整数字符转换相加

题目概述:Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list...

weixin_34088583的博客 278

MaxEnt软件的下载与安装

1、下载网站:http://lucky-boy.ys168.com/ (这是之前在网上搜到的,里面有许多软件安装包,感谢网页主的资源共享,违权必删)

weixin_42191203的博客 2万+

《leetcode刷题讲解》—漫漫编程路

目录 1.问题描述 2.代码及解析 1.问题描述 leetcode 66.加一 难度easy 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 来源:力扣(LeetCode) 链接:66. 加一 - 力扣(LeetCode) (leetcode-cn.com) 2.代码及解析 /** * Note: The returned arra

m0_60756071的博客 515

异步复位同步释放:如何确保复位信号的可靠性与时序安全

本文深入探讨了异步复位同步释放技术在数字电路设计中的关键作用,详细分析了复位信号的可靠性与时序安全问题。通过对比异步复位与同步复位的本质区别,揭示异步复位的优势与潜在风险,并提供了标准的Verilog实现方案。文章还涵盖了多时钟域下的复位同步策略、复位网络时序约束方法以及实际工程中的经验教训,为数字系统设计者提供了全面的复位信号处理指南。

weixin_29213655的博客 399

CentOS 7.9安装python3.11

CentOS 7.9安装python3.11

leafseelight的专栏 1342

【Leetcode】C语言 66. Plus One

以最后一个元素开始,若有进位则保存到curr上并对原数据上加1,并定义一个新的数组。若没有进位则正常返回。 int* plusOne(int* digits, int digitsSize, int* returnSize){ *returnSize = digitsSize; int i = 0; int curr = 1; for(i = digitsSize-1; i >= 0; i--){ curr = (digits[i]+curr)/10;.

LYYF177的博客 431

SmartFusion从FPGA到ARM(一)——MSS_GPIO点灯

文章目录前言GPIO点灯 前言 GPIO点灯

whik1194的博客 5270

【LeetCode】算法题66 Plus One

题目:Plus One Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. You may assume the integer do not contain any leading zero, except the number

Jojo 367

事件驱动的 SAP 工作流:从 BOR 事件到 Event Linkage 的落地与排障全景图

摘要: SAP工作流中的Event是业务对象状态变化的系统广播机制,如发票录入、采购订单释放等事件。通过事件驱动,业务程序与流程引擎解耦,业务只需发布事件,流程引擎负责后续处理。文章详细解析了SAP工作流事件的完整链路,包括事件定义、触发机制、事件容器传递、SWE2配置的关键作用,以及事件不触发时的排查方法。重点介绍了事件在启动流程、终止任务、等待步骤和主动创建中的应用,并结合采购订单审批案例说明事件的实际使用场景和配置要点。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 188

20、啁啾脉冲光纤放大器:原理、设计与仿真

本文详细介绍了啁啾脉冲光纤放大器(FCPA)的原理、设计与仿真过程。内容涵盖CPA技术的基本原理、光纤基CPA系统的组成、Tm掺杂光纤放大器的工作机制、全光纤脉冲展宽器的设计以及仿真分析。通过MATLAB仿真展示了脉冲在光纤中的展宽与放大过程,并讨论了如何优化系统以减少非线性失真、控制峰值功率并提高整体性能。文章还总结了系统优化的关键策略,并展望了未来的发展方向。

v4w5x6的博客 318

实现数组加一

题目来源于力扣 数组中的各个元素由0-9之间的数字组成,组成一个非负整数,包括0,9。除了0之外,不会有数字以0开头。数组的首位是数字的最高位,比如{1,2,3}加一操作后变成{1,2,4},{0}加一变成{1},{9}加一变成{1,0} ...

Futureing的博客 1547

第一章:信号链的精度之战:深入解决电流采样偏差

摘要:本文深入探讨了FOC控制中电流采样偏差问题及其解决方案。电流采样偏差主要来源于偏移误差、增益误差、非线性误差和温漂四大类,其中偏移误差对FOC性能影响最为严重。硬件方面建议采用高精度采样电阻、低失调运放和独立基准电压等设计;软件层面提出了上电自动零点校准、在线实时补偿和模型闭环补偿三种策略。最后介绍了量产自动化校准系统,通过硬件优化和软件补偿相结合,确保每台产品电流采样精度的一致性,为FOC控制奠定坚实基础。

汽车软件开发 602

Plus One

Given anon-emptyarray of digitsrepresenting a non-negative integer, plus one to the integer. The digits are stored such that the most significant digit is at the head of the list, and each element...

weixin_30908649的博客 159

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Plus One 给一个数加上1

先来看几个例子: 998 + 1 = 999 979 + 1 = 980 999 + 1 = 1000 只有形如999这类的,+1 后数的位数才可能发生变化。

keke he的专栏 450

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

leecode :加一

第一种思路: int* plusOne(int* digits, int digitsSize, int* returnSize){ int i=0; int* arr=NULL; int ret=0,div=0,j=-1; ret=(digits[digitsSize-1]+1)%10;//先处理最低位的进位和余位 div=(digits[digitsSize-1]+1)/10; digits[digitsSize-1]=ret; for(i..

qq_59619949的博客 250

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【数组】#66 加一

加一1,题目2,代码 1,题目 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。 输入:digits = [0] 输出:[1] 2,代码 遍历 int* plusOne(int* digits, int digitsSize, int* returnSize) { f

huangxudongzzZ的博客 451

[C语言][LeetCode][66]Plus One

题目Plus One Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list.标签Array、Math难度简

Timsley的专栏 2375

leetcode66题 题解 翻译 C语言版 Python版

66. Plus One Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list. 66

陈止风的博客 1702

leetcode-初级-plusone

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

mouthful的博客 193

[C语言] leetcode 66. Plus One

题目: Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list. 题目解释: 先解释一

沧海漂游的博客 685

【新手上路】LeetCode刷题之“加一”

新手上路算法题,等到下学期学完数据结构和算法再疯狂练习吧,先挑简单的做

April_Zhao的博客 336

[leetcode]Plus One C语言

【题目】 Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of the list.【题目分析】 这道题的关键在于最高位有没

noc_lemontree的博客 2276

leetcode 66.加一 c语言

一开始直接用的除法,一半的用例无法通过。才发现是没考虑到数组的位数超出整型范围的问题。后来百度这道题的解法,发现一开始方向就错了,应该循环判断每一位数和9的关系。 int* plusOne(int* digits, int digitsSize, int* returnSize) { int len,i,k=0,j;long int sum=0; int* re =(int*...

qq_41880471的博客 1366

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 192

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 297
上一篇: Leetcode笔记整理—easy篇—Length of Last Word
下一篇: C\C++中的链接类问题整理
晴川QZ
博客等级 码龄10年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值