66. Plus One某数+1(通过放到数组里)--Array
来源:互联网 发布:淘宝收藏加购在哪里 编辑:程序博客网 时间:2024/06/03 18:47
66. Plus One某数+1(通过放到数组里)--Array
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.
Subscribe to see which companies asked this question
两种方法时间一样,都是3ms.
法1:
class Solution {public:// 假设现有一个数是239,则将2、3、9放入digits中,即digits[2,3,9]// 输出应为240 vector<int> plusOne(vector<int>& digits) { // bad input检查 int sz = digits.size(); if(sz == 0) return digits; // 初始化变量 vector<int> digitsAfterPlusOne(sz); // +1后的结果vector,长度和原数位数相同 int thisBitVal = 0; // +1后,"当前位"的值 bool WhetherBeforeBitCarry = 1; // +1后,"前一位"是否进位(其中"carry"意为进位)... // ...初始值是1仅仅是为了最后一位的+1,之后每次循环该值都会变 for(int i = sz - 1; i >= 0; --i) // 从后向前遍历旧数组(因为从后向前+1) { thisBitVal = digits[i] + WhetherBeforeBitCarry; // "当前位" 要加上 "后面进上来的位" WhetherBeforeBitCarry = thisBitVal / 10; // +1后,"前一位"是否要进位 digitsAfterPlusOne[i] = thisBitVal % 10; // +1后,"当前位"的值 } // 第一位(即999的"百位的9")进位怎么办 if(WhetherBeforeBitCarry != NULL) digitsAfterPlusOne.insert(digitsAfterPlusOne.begin(), WhetherBeforeBitCarry); return digitsAfterPlusOne; }};
法2:全部拷贝一遍,从后向前遍历,若进位为0则结束(前面的数肯定不会变了),和法1时间一样(仅仅13、24、25行有改变)
class Solution {public:// 假设现有一个数是239,则将2、3、9放入digits中,即digits[2,3,9]// 输出应为240 vector<int> plusOne(vector<int>& digits) { // bad input检查 int sz = digits.size(); if(sz == 0) return digits; // 初始化变量 vector<int> digitsAfterPlusOne(digits); // +1后的结果vector,长度和原数位数相同 int thisBitVal = 0; // +1后,"当前位"的值 bool WhetherCarryToBeforeBit = 1; // +1后,"前一位"是否进位(其中"carry"意为进位)... // ...初始值是1仅仅是为了最后一位的+1,之后每次循环该值都会变 for(int i = sz - 1; i >= 0; --i) // 从后向前遍历旧数组(因为从后向前+1) { thisBitVal = digits[i] + WhetherCarryToBeforeBit; // "当前位" 要加上 "后面进上来的位" WhetherCarryToBeforeBit = thisBitVal / 10; // +1后,"前一位"是否要进位 digitsAfterPlusOne[i] = thisBitVal % 10; // +1后,"当前位"的值 if(WhetherCarryToBeforeBit == NULL) // 只是+1,没有进位了,前面的数肯定不会变了(如239 到 240 百位2没变) return digitsAfterPlusOne; } // 第一位(即999的"百位的9")进位,在最前面插入1 if(WhetherCarryToBeforeBit != NULL) digitsAfterPlusOne.insert(digitsAfterPlusOne.begin(), WhetherCarryToBeforeBit); return digitsAfterPlusOne; }};
0 0
- 66. Plus One某数+1(通过放到数组里)--Array
- LeetCode-Array-66. Plus One
- Leetcode - Array - 66. Plus One(简单模拟)
- [leetcode] 【数组】 66. Plus One
- LeetCode[Array]: Plus One
- leetcode66.[Array] Plus One
- LeetCode | Plus One(数组表示的数字加1)
- Plus One 给一个数加上1
- LeetCode 66. Plus One(加1)
- Plus One 数组加1,vector处理
- plus one 数组末位+1
- plus-one:数组模拟的大数+1
- [leetcode]Plus One(int数组)
- 数组 Plus One
- 27. Remove Element \ 66. Plus One \ 88. Merge Sorted Array
- 【leetcode】Array—— Plus One(66)
- 66:Plus One【数组】【数学】
- 数组——plus-one
- hdu2052 Picture
- Windows 10 搭建Python开发环境(PyCharm )
- leetcdoe---Contains Duplicate
- C# 委托带参数的情况下如何传入到一个方法中
- ARM详解
- 66. Plus One某数+1(通过放到数组里)--Array
- Redis报错 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d
- SQL 基础--> 视图(CREATE VIEW)
- DVWA-1.9全级别教程之File Upload
- 前言
- 简单介绍下MYSQL的索引类型
- 我的csdn博客积分清零了,博客等级也恢复成了1级,这是怎么回事?
- 关于opencv2和3在图像特征识别的区别。
- spring事务回滚问题