加一 Plus One

问题描述

这个题目比较简单, 就是用数组来模拟任意精度的整数相加, 数组中的每个元素代表了十进制整数值中的每个位.

这个问题唯一要操作的是进位置 carry, 从右向左依次将数组中的每个元素与 carry 相加, 然后把结果写回到该元素, 如果产生了新的进位, 就把它写回到 carry.

#![allow(unused)]
fn main() {
pub fn plus_one1(digits: Vec<i32>) -> Vec<i32> {
    let mut digits = digits;
    let mut carry = 1;
    // 从右向左依次遍历数组中的每个进位的值.
    for digit in digits.iter_mut().rev() {
        let sum = *digit + carry;
        carry = sum / 10;
        *digit = sum % 10;
    }
    if carry == 1 {
        digits.insert(0, carry);
    }
    digits
}
}