LEETCODE#66加一

陌路散爱 提交于 2020-02-29 22:09:03

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

 1.  从后向前找,末位非0直接加1;末位为9则改为0,若前一位非9则加1返回,若前一位为9则加至非9返回;若为99形式,首位置1末位加0。

vector<int> plusOne(vector<int>& digits) {
    int num = digits.size();
    if(digits[num-1] != 9)
    {
        digits[num-1]++;
        return digits;
    }
    for(int i = num-1; i >= 0; i--)
    {
        if(digits[i] == 9)
            digits[i] = 0;
       else{
           digits[i] ++;
           return digits;
       }
    }
    digits.insert(digits.begin(), 1);
    return digits;
}

2. 从后向前,找到第一个不为9的数,该位+1,该位后的数均变为0;未找到的话,说明该数全为9,则返回 1 加 digits.size()个0

vector<int> plusOne(vector<int>& digits) {
int len=digits.size();        
    for(int i=len-1;i>=0;i--) {
    if(digits[i]!=9) 
    {
        digits[i]+=1;                
        for(int j=i+1;j<len;j++)
            digits[j]=0;
        return digits;
    }else  
        continue;       
    }   
    vector<int> ans(len, 0);
    ans.insert(ans.begin(),1);
    return ans;
}

 3. 判断进位法

vector<int> plusOne(vector<int>& digits) {
    int i=0;
    int size=digits.size();//记录当前容量大小
    for(i=size-1;i>=0;i--)
    {
        digits[i]++;
        digits[i]=digits[i]%10;//进位
        if(digits[i]!=0)//若无进位则返回
            return digits;
    }
    if(i==-1) //处理99,999类数字情况
    {
        digits.insert(digits.begin(),1);
    }
    return digits;
}

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!