C++实现LeetCode(66.加一运算)
[LeetCode] 66. Plus One 加一运算
【C++实现LeetCode(66.加一运算)】Given a non-empty array of decimal digits representing a non-negative integer, increment 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 contains a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.
Example 1:
Input: digits = [1,2,3]Example 2:
Output: [1,2,4]
Explanation: The array represents the integer 123.
Input: digits = [4,3,2,1]Example 3:
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Input: digits = [0]Constraints:
Output: [1]
- 1 <= digits.length <= 100
- 0 <= digits[i] <= 9
C++ 解法一:
class Solution {public:vectorplusOne(vector &digits) {int n = digits.size(); for (int i = n - 1; i >= 0; --i) {if (digits[i] == 9) digits[i] = 0; else {digits[i] += 1; return digits; }}if (digits.front() == 0) digits.insert(digits.begin(), 1); return digits; }};
Java 解法一:
public class Solution {public int[] plusOne(int[] digits) {int n = digits.length; for (int i = digits.length - 1; i >= 0; --i) {if (digits[i] < 9) {++digits[i]; return digits; }digits[i] = 0; }int[] res = new int[n + 1]; res[0] = 1; return res; }}
我们也可以使用跟之前那道 Add Binary 类似的做法,将 carry 初始化为1,然后相当于 digits 加了一个0,处理方法跟之前那道题一样,参见代码如下:
C++ 解法二 :
class Solution {public:vectorplusOne(vector & digits) {if (digits.empty()) return digits; int carry = 1, n = digits.size(); for (int i = n - 1; i >= 0; --i) {if (carry == 0) return digits; int sum = digits[i] + carry; digits[i] = sum % 10; carry = sum / 10; }if (carry == 1) digits.insert(digits.begin(), 1); return digits; }};
Java 解法二 :
public class Solution {public int[] plusOne(int[] digits) {if (digits.length == 0) return digits; int carry = 1, n = digits.length; for (int i = digits.length - 1; i >= 0; --i) {if (carry == 0) return digits; int sum = digits[i] + carry; digits[i] = sum % 10; carry = sum / 10; }int[] res = new int[n + 1]; res[0] = 1; return carry == 0 ? digits : res; }}
到此这篇关于C++实现LeetCode(66.加一运算)的文章就介绍到这了,更多相关C++实现加一运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- java中如何实现重建二叉树
- leetcode|leetcode 92. 反转链表 II
- 人脸识别|【人脸识别系列】| 实现自动化妆