这篇“C++如何实现加一运算”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现加一运算”文章吧。
创新互联公司是一家集网站建设,青阳企业网站建设,青阳品牌网站建设,网站定制,青阳网站建设报价,网络营销,网络优化,青阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
Example 1:
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Example 2:
Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Example 3:
Input: digits = [0]
Output: [1]
Constraints:
1 <= digits.length <= 100
0 <= digits[i] <= 9
将一个数字的每个位上的数字分别存到一个一维向量中,最高位在最开头,我们需要给这个数字加一,即在末尾数字加一,如果末尾数字是9,那么则会有进位问题,而如果前面位上的数字仍为9,则需要继续向前进位。具体算法如下:首先判断最后一位是否为9,若不是,直接加一返回,若是,则该位赋0,再继续查前一位,同样的方法,知道查完第一位。如果第一位原本为9,加一后会产生新的一位,那么最后要做的是,查运算完的第一位是否为0,如果是,则在最前头加一个1。代码如下:
C++ 解法一:
class Solution { public: vectorplusOne(vector &digits) { int n = digits.size(); for (int i = n - 1; i >= 0; --i) { if (digits[i] == 9) digits[i] = 0; else { digits[i] += 1; return digits; } } if (digits.front() == 0) digits.insert(digits.begin(), 1); return digits; } };
Java 解法一:
public class Solution { public int[] plusOne(int[] digits) { int n = digits.length; for (int i = digits.length - 1; i >= 0; --i) { if (digits[i] < 9) { ++digits[i]; return digits; } digits[i] = 0; } int[] res = new int[n + 1]; res[0] = 1; return res; } }
我们也可以使用跟之前那道 Add Binary 类似的做法,将 carry 初始化为1,然后相当于 digits 加了一个0,处理方法跟之前那道题一样,参见代码如下:
C++ 解法二 :
class Solution { public: vectorplusOne(vector & digits) { if (digits.empty()) return digits; int carry = 1, n = digits.size(); for (int i = n - 1; i >= 0; --i) { if (carry == 0) return digits; int sum = digits[i] + carry; digits[i] = sum % 10; carry = sum / 10; } if (carry == 1) digits.insert(digits.begin(), 1); return digits; } };
Java 解法二 :
public class Solution { public int[] plusOne(int[] digits) { if (digits.length == 0) return digits; int carry = 1, n = digits.length; for (int i = digits.length - 1; i >= 0; --i) { if (carry == 0) return digits; int sum = digits[i] + carry; digits[i] = sum % 10; carry = sum / 10; } int[] res = new int[n + 1]; res[0] = 1; return carry == 0 ? digits : res; } }
以上就是关于“C++如何实现加一运算”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。