[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.

 

  这题有意思啊,虽然是easy题但我还是折腾了很久,一开始做出一个逗比解法:把数组读出来拼装成数字,然后加1,再拆成数组。然后还自作聪明的处理了溢出的情况。结果发现人家根本不对范围有限制,也就是即使数组里面是一亿也要返回一亿零一。所以那个想法还是图样图森破。所以只能对数组做操作了。。。 

  但是处理加1就要考虑进位的问题,而进到最后就要多出一位数,多出一位数就意味着要往数组头塞进一个数,要往数组头塞进一个数跟重新创建一个新数组没区别,所以这题应该是没有很好的 In place 解法。

  然后就要考虑怎么实现加1这个操作了: 如果数字不是9的话就直接加1,如果是9的话就要变成0并且把进位设为1....

这样貌似很复杂,一时不知道怎么写,case估计也很多,要判断具体值和进位,But...其实仔细思考以后发现,加1操作其实和进位并没有本质区别。

把一个数加1其实跟一个数的小数部分进了一位到个位上没有什么区别。所以,把加1和进位操作为一类动作后问题也就简单了。

  思路就是:把进位初始值设为1,从数组末尾往回扫,取到一个数就把他加上进位,然后除以10算出新的进位,模以10算出新值,把新值push进栈。

这样到扫描完的时候,再检查一下最后的进位值是否为1,是的话就把1push进栈。最后把栈倒进数组返回就行了。

这里需要注意的是:

1.便利结束后还需检查最后是否还有进位

2.这样从低位到高位逐个产生数的顺序是反的,需要反过来,这里就用栈来做逆序操作。

vector<int> plusOne(vector<int> &digits) {int carry = 1;int ptr = (int)digits.size() - 1;vector<int> ret;if (ptr < 0) return ret;stack<int> s;for (int i = ptr; i >= 0; i--) {int val = digits[i] + carry;carry = val / 10;val = val % 10;s.push(val);}if (carry) {s.push(1);}while (!s.empty()) {ret.push_back(s.top());s.pop();}return ret;
}

 

另附逗比版:

vector<int> plusOneDoge(vector<int> &digits) {int t = 0;for (int i = 0; i < digits.size(); i++) {if (t > INT_MAX / 10) {t = INT_MAX - 1;break;}t = t * 10 + digits[i];}t += 1;vector<int> ret;stack<int> s;while (t) {s.push(t % 10);t /= 10;}while (!s.empty()) {ret.push_back(s.top());s.pop();}return ret;
}
逗比版

 

转载于:https://www.cnblogs.com/agentgamer/p/4098571.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六大“未来式”存储器,谁将脱颖而出?

来源&#xff1a;半导体行业观察摘要&#xff1a;最近&#xff0c;一篇回顾该领域现状的论文对六种最有前景的技术进行了盘点和解读。对神经形态计算的浓厚兴趣刺激人们研发出一系列全新的存储设备&#xff0c;这些设备可以复制生物神经元和突触功能。最近&#xff0c;一篇回顾…

cuda学习

CUDA 安装测试部分 https://blog.csdn.net/sunmc1204953974/article/details/51000970 CUDA的HelloWorld程序编写 https://www.cnblogs.com/neopenx/p/4643705.html 对多线程并行处理的解释&#xff1a;https://blog.csdn.net/sunmc1204953974/article/details/51025801 以下的…

英特尔第七任CEO敲定 斯旺为何受到董事会青睐?

来源&#xff1a;网易科技2019年1月最后一天&#xff0c;芯片巨头英特尔公司(Intel)宣布任命临时首席执行官罗伯特斯旺(Robert Swan)为正式CEO&#xff0c;从而结束了长达数月的猎头工作。此前&#xff0c;英特尔前任CEO布莱恩柯再奇(Brian Krzanich)因与员工存在“暧昧关系”而…

图灵奖得主长文报告:是什么开启了计算机架构的新黄金十年?

来源&#xff1a;AI科技评论摘要&#xff1a;2017 年图灵奖的两位得主 John L. Hennessy 和 David A. Patterson 就是这个新浪潮的见证者和引领者。近几年来&#xff0c;不论是普通消费者还是科研人员们都可以感受到两种浪潮&#xff0c;一种是CPU速度的提升越来越不显著了&…

ubuntu安装wine之后进不了系统

以前曾经装过一次wine&#xff0c;安装的时候没碰到什么问题&#xff0c;但卸载的时候却出问题了&#xff0c;把我nouvean显卡给删除了。 自然&#xff0c;我下一次启动的时候就进不了桌面了。所以我得重装一次&#xff0c;那一次重装的是整个系统&#xff01; 今天突然觉得evi…

5G到底有哪些能力

来源&#xff1a;工信头条作者&#xff1a;华为5G首席科学家 童文摘要&#xff1a;华为5G首席科学家告诉你5G到底有哪些能力&#xff01;2019年是5G产业进入全面商用的关键一年&#xff0c;全球5G网络的部署已经启动。2018年6月&#xff0c;5G独立组网标准冻结&#xff0c;5G完…

口琴简易吹奏法

摘自上海口琴说明书。 口琴体积小巧&#xff0c;携带方便&#xff0c;有"带着走的音乐"、"口袋里的钢琴"之称。 口琴是一种簧舌乐器&#xff0c;用嘴吹吸发音。 复音口琴每孔上下两个是同音&#xff0c;吹奏时两格内的簧片同时发音。 口琴的 "1、3…

商业航天:通往太空旅程的新门票

来源&#xff1a;资本实验室自1969年美国实现人类首次登月之后&#xff0c;很长一段时间里&#xff0c;人类对月球的探索计划因各种原因变得沉寂。近年来&#xff0c;随着各国航天科技的持续发展&#xff0c;人类正在启动对月球的全新探索旅程。今年1月3日&#xff0c;我国“嫦…

关于用css实现的文字超出部分显示省略号

文字超出部分显示省略号还是比较常用的一个效果,最近看到网上的一些方法亲自实践了一下,发现有些以前一些浏览器不能用的属性现在可以用了&#xff0c;于是研究了一番&#xff0c;现总结如下&#xff1a; 我们先来看下HTML代码&#xff1a; <div><p><span>用…

AIoT的生死局:未来的AIoT很赚钱,但目前的AI+IoT很花钱

来源&#xff1a;物联网智库整理摘要&#xff1a;AIoT目前仍处于发展的起步阶段&#xff0c;只能作为一种美好的愿想&#xff0c;无论从AI还是IoT本身来看&#xff0c;仍然存在着许许多多的问题。如同互联网等新兴技术发展初期一样&#xff0c;AIoT也多少存在追捧与泡沫。尽管从…

链表的经典问题

链表的经典问题 如何判断两个单链表是否相交&#xff0c;如果相交&#xff0c;找出交点&#xff08;两个链表都不存在环&#xff09; 如果两个单链表相交&#xff0c;那应该呈“Y”字形&#xff0c;也就是从交点以后的部分是两个链表的公共节点。 所以&#xff0c;判断是否相交…

亚马逊、谷歌和微软寸土必争的新战场

作者&#xff1a; Caroline Donnelly 编译&#xff1a;机器之能 张玺摘要&#xff1a;当亚马逊、谷歌与微软都表示要争取所有可能的垂直市场客户时&#xff0c;云服务三巨头在零售市场的竞争变得愈发有趣。云技术在零售市场应用方面表现抢眼&#xff0c;但是竞争问题正在影响客…

duilib环境配置以及简单入门介绍

内容全部为转载&#xff1a; VS2013的编译&#xff0c;https://www.cnblogs.com/Alberl/p/3342030.html duilib框架介绍&#xff0c;以及VS2013配置&#xff0c;创建工程&#xff0c;调试代码部分&#xff1a; https://blog.csdn.net/lanuage/article/details/52040306 https:/…

2019年汽车行业深度投资研究

来源&#xff1a;中泰证券2018年预计我国汽车销售负增长&#xff0c;为30年来首次&#xff0c;批发数据自5月份开始逐步下降&#xff0c;尤其是9月之后,销售增速加速下滑,判断汽车市场弱势的原因和持续时间长短&#xff0c;是思考2019年汽车行业投资策略的前提。我们认为&#…

有没有哪些数学猜想是验证到很大的数以后才发现是错的?

来源&#xff1a;孙天任算数学苑素数的分布密度为 ρ(x)~1/ln(x)&#xff0c;从而在 x 以内的素数个数——通常用 π(x) 表示——为&#xff1a; π(x) ~ Li(x) 其中 Li(x) ≡ ∫ 1/ln(x) dx 是对数积分函数 。这个结果有些读者可能也认出来了&#xff0c;它正是著名的素数定理…

徐铁:当深度学习握手脑科学-圣城会议归来

原创&#xff1a;许铁 来源&#xff1a;混沌巡洋舰耶路撒冷号称三教圣地&#xff0c; 而它的牛逼之处绝不仅在于宗教&#xff0c; 如果你深入了解&#xff0c; 你会发现它的科学&#xff0c;尤其是理论创新也同样牛逼&#xff0c; 尤其是在脑科学和人工智能方向。 当然神族…

重磅!联合国权威AI趋势报告,美中日韩四分天下

来源&#xff1a;智东西摘要&#xff1a;AI趋势报告&#xff0c;中美专利申请和科学出版数遥遥领先。近年来&#xff0c;随着AI从理论知识落地到全球市场&#xff0c;AI正以其潜在的革命性影响&#xff0c;持续推动技术和产业的重大变革&#xff0c;从天气预报、自动驾驶、癌症…

通信产业5G迭代,万亿机遇一触即发

来源&#xff1a;中银国际摘要&#xff1a;进入本世纪一零年代后&#xff0c;全球通信行业首先迎来了4G商用的元年。▌通信产业5G迭代促使中国企业突破进入本世纪一零年代后&#xff0c;全球通信行业首先迎来了4G商用的元年。LTE网络在世界各地开花&#xff0c;“管”领域的性能…

duilib中界面的布局方式

参考博客&#xff1a;https://blog.csdn.net/zhuhongshu/article/details/38531447 常用的布局默认为相对布局&#xff0c;默认floatfalse&#xff0c;该属性为true时&#xff0c;表示绝对布局&#xff1b; 相对布局方式可以依据界面自动调整控件大小。 最常用的VerticalLayout…

美丽新世界:这七个原因将让未来更美好

来源&#xff1a;资本实验室摘要&#xff1a;技术进步推动人类社会的进步。然而在现实生活中&#xff0c;对技术的恐惧困扰着相当一部分人。暴走的机器人、失控的AI、滥用的人体增强……这些经常出现于各种反乌托邦科幻故事中的场景也被认为是对技术破坏的一种警示。如果能够从…