码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]Plus One

时间:2015-04-02 01:20:13      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

Plus One

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.

解题思路:
这道题倒是挺简单的,但是我最开始没有理解题意(我的英语不好啊),这道题的本意是用一个数组表示一个非负整数,如:[1,0,9]表示109。给这个数组进行加1操作。明白了这个,就容易多了。下面是代码:

class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        int len = digits.size();
        vector<int> result;
        int over = 1;
        for(int i=len-1; i>=0; i--){
            int number = digits[i] + over;
            over = number / 10;
            result.insert(result.begin(), number % 10);
        }
        if(over>0){
            result.insert(result.begin(), over);
        }
        
        return result;
    }
};
注意到vector的insert方法的使用。vector的底层实现是数组,每次给第一个位置加一个元素,就相当于每次都将他后移一位,比较耗时。可以考虑先用栈来保存结果,最后出栈。下面是代码:
class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        int len = digits.size();
        int* stack = new int[len+1];
        int top = 0;
        int over = 1;
        for(int i=len-1;i>=0; i--){
            int number = digits[i] + over;
            over = number/10;
            stack[top++] = number%10;
        }
        if(over>0){
            stack[top++] = over;
        }
        vector<int> result;
        while(top>0){
            result.push_back(stack[--top]);
        }
        delete stack;
        return result;
    }
};


[LeetCode]Plus One

标签:

原文地址:http://blog.csdn.net/kangrydotnet/article/details/44819389

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!