66. 加一

66. 加一

做法一

vector<int> Solution::plusOne(vector<int>& digits) {
	int right = digits.size() - 1;
	//最后一位加1,计算进位
	int carry = (digits[right] + 1)/10;
	//加上去
	digits[right] = (digits[right] + 1) % 10;
	right--;
	while (right >= 0 && carry == 1) {
		carry = (digits[right] + carry) / 10;
		digits[right] = (digits[right] + 1) % 10;
		right--;
	}
	
	if (right < 0 &&carry==1) {
		digits.insert(digits.begin(),1);
	}
	return digits;

}

改进

单纯为了解决这个题的话,只看9就可以了,看每一步都是加一操作

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
	for (int i = digits.size() - 1; i >= 0; i--) {
		if (digits[i] != 9) {
			digits[i]++;
			return digits;
		}
		digits[i] = 0;
	}
	digits.insert(digits.begin(), 1);
	return digits;
    }
};
上一篇:物体检测模型RFBNet——一个非常好用的模型。


下一篇:斑码教育web前端课堂笔记-第66天-模块式开发