66. Plus One

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     vector<int> plusOne(vector<int>& digits) 
12     {
13         int sz=digits.size();
14         for(int i=sz-1;i>=0;i--)
15         {
16             if(digits[i]==9)
17                 digits[i]=0;
18             else
19             {
20                 digits[i]+=1;
21                 return digits;
22             }
23         }
24         digits[0]=1;
25         digits.push_back(0);
26         return digits;
27     }
28 };

以上是个人方法,也是大部队用的,从后向前扫,有9就置0,没9就加1后返回。如果for循环结束,说明全是9,这时候就要把第一位置1,并且在末尾补充0.

下面是大佬写法:

1 vector<int> plusOne(vector<int>& digits) {
2     for (int i=digits.size(); i--; digits[i] = 0)
3         if (digits[i]++ < 9)
4             return digits;
5     digits[0]++;
6     digits.push_back(0);
7     return digits;
8 }

原理和大众的一样,但是for循环用得相当6。

猜你喜欢

转载自www.cnblogs.com/zhuangbijingdeboke/p/8856689.html