博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
66. Plus One
阅读量:4624 次
发布时间:2019-06-09

本文共 2216 字,大约阅读时间需要 7 分钟。

题目描述

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 0 itself.

The digits are stored such that the most significant digit is at the head of the list.

思路

让个位数开始+1,判断有没有进位(也就是是否大于10),有的话前面的那一位要加一,没有的话继续往前进,直到第一位,如果这个数没进位,比如 98 -> 99。就不用特殊考虑。

如果这个数也进位了,比如99 - > 100, 那你需要设置一个额外的变量来存第一个位的值,没进位是零,有进位是1,然后将所有的值赋给新的数组。

class Solution {public:    vector
plusOne(vector
& digits) { int i, k, sum = 0, extra = 0; vector
ans; int count = 0; int n = digits.size(); if (n == 1) { digits[0] = digits[0] + 1; if (digits[0] >= 10) { digits[0] = 1; digits.push_back(0); return digits; } sum = extra * 10 + digits[0]; if (sum >= 1 && sum <= 9) { digits[0] = sum; return digits; } } k = digits[n - 1] + 1; for (i = 1; i < n; i++) { if (k >= 10) { digits[n - i] = k % 10; digits[n - i - 1] += 1; if (digits[0] >= 10) { extra = 1; digits[0] = digits[0] % 10; } k = digits[n - i - 1]; } else { digits[n - i] = k; k = digits[n - i - 1]; } } if (extra != 0) ans.push_back(extra); for (i = 0; i < digits.size(); i++) { ans.push_back(digits[i]); } return ans; }};

简化

class Solution {public:    vector
plusOne(vector
& digits) { int i, sum = 0, one = 1;//进位标识 for (i = digits.size()-1; i >= 0; i--) { sum = digits[i] + one;//每一次加进位后的值 digits[i] = sum % 10;//实际值 one = sum / 10;//进位 } if (one != 0) digits.insert(digits.begin(),one); return digits; }};

转载于:https://www.cnblogs.com/pjc20/p/7707672.html

你可能感兴趣的文章
Static Binding (Early Binding) vs Dynamic Binding (Late Binding)
查看>>
搭建git服务器
查看>>
iOS之UIDynamic UI动力学使用步骤
查看>>
poj 2498 动态规划
查看>>
Windows Phone 7中使用PhoneApplicationService类保存应用程序状态
查看>>
MySql数据库的下载和安装卸载
查看>>
JDBC接口核心的API
查看>>
双缓冲技术局部更新原理之派生自View
查看>>
PPAPI插件与浏览器的通信
查看>>
用 query 方法 获得xml 节点的值
查看>>
Hello,Android
查看>>
Sublime Text 3 build 3103 注册码
查看>>
删与改
查看>>
SAP 中如何寻找增强
查看>>
spi驱动无法建立spidev问题
查看>>
ANDROID开发之SQLite详解
查看>>
如何依靠代码提高网络性能
查看>>
Zookeeper要安装在奇数个节点,但是为什么?
查看>>
discuz 微社区安装记录
查看>>
[BZOJ4824][Cqoi2017]老C的键盘 树形dp+组合数
查看>>