【数组】66. 加一

题目:

 

 

解答:

思路:从末位向前逐位模拟十进制加法器,首位进行单独判断。

 1 class Solution {
 2 public:
 3     vector<int> plusOne(vector<int>& digits) 
 4     {
 5         int size = digits.size();
 6         for(int i = size - 1; i >= 0; --i)
 7         {
 8             if(digits[i] < 9)                    // 第一位小于9,直接相加返回。
 9             {
10                 ++digits[i];
11                 return digits;
12             }
13             if(i == 0)
14             {
15                 digits[i] = 1;          // 如果首位也产生了进位, 才会执行这条语句,否则循环中已经return了。
16                 digits.push_back(0);
17             }
18             else
19             {
20                 digits[i] = 0;          // 进位。
21             }
22         }
23         return digits;
24     }
25 
26 };

 

posted @ 2020-05-04 16:03  梦醒潇湘  阅读(171)  评论(0)    收藏  举报