LeetCode之Plus One

2014-11-24 08:21:34 · 作者: · 浏览: 0

【题目】

Given a number represented as an array of digits, plus one to the number.

【题意】

给你一个用数组表示的数,求加一之后的结果,结果还是用数组表示。

【分析】

从低位到高位,连续遇到9才能加一进位。

【代码1】

/*********************************
*   日期:2014-01-22
*   作者:SJF0115
*   题号: Plus One
*   来源:http://oj.leetcode.com/problems/plus-one/
*   结果:AC
*   来源:LeetCode
*   总结:
**********************************/
#include 
  
   
#include 
   
     #include 
    
      using namespace std; class Solution { public: vector
     
       plusOne(vector
      
        &digits) { int i; for(i = digits.size() - 1;i >= 0;--i){ if(digits[i] != 9){ ++digits[i]; return digits; } else { digits[i] = 0; } } //各位全是9 if(i < 0) { digits.insert(digits.begin(),1); } return digits; } }; int main() { Solution solution; vector
       
         result; vector
        
          array = {9,9,9}; result = solution.plusOne(array); int n = result.size(); for(int i = 0;i < n;i++){ printf("%d",result[i]); }//for printf("\n"); return 0; } 
        
       
      
     
    
   
  

【代码2】

class Solution {
public:
    vector
  
    plusOne(vector
   
     &digits) { add(digits,1); return digits; } private: //模版:数组表示的大数加一个整数(0-9) void add(vector
    
      &digits,int value){ int i; //进位 int c = value; int n = digits.size(); for(i = n - 1;i >= 0;i--){ digits[i] += c; c = digits[i] / 10; digits[i] %= 10; } //还有进位 if(c > 0){ digits.insert(digits.begin(),c); } } };