首页 > 代码库 > Leetcode:Plus One
Leetcode: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,其余位没有额外加数,所以分情况:
class Solution { public: vector<int> plusOne(vector<int> &digits) { vector<int> res(digits); int val = 0; int carry = 0; for (int i = digits.size() - 1; i >= 0; --i) { if (i == digits.size() - 1) { val = (digits.at(i) + 1 + carry) % 10; carry = (digits.at(i) + 1 + carry) / 10; } else { val = (digits.at(i) + carry) % 10; carry = (digits.at(i) + carry) / 10; } res.at(i) = val; } if (carry == 1) { res.insert(res.begin(), 1); } return res; } };
后来看了他人的题解,有个小技巧,可以将 进位 carry 初始化为 加数,这样就可以统一代码,而不需要分情况了
class Solution { public: vector<int> plusOne(vector<int> &digits) { vector<int> res(digits); int val = 0; int carry = 1; for (int i = digits.size() - 1; i >= 0; --i) { val = (digits.at(i) + carry) % 10; carry = (digits.at(i) + carry) / 10; res.at(i) = val; } if (carry == 1) { res.insert(res.begin(), 1); } return res; } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。