Rust 加一

加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

思路: 先旋转数组便于计算,声明一个变量保存进位,先加上进位,然后进位清零,在比较大小,大于9,进位加1;最后判断最后一位是否为零,是零push(1),最后旋转过来;

impl Solution {
    pub fn plus_one(digits: Vec<i32>) -> Vec<i32> {
        let mut vec = digits;
        let len = vec.len();
        if vec[len -1] < 9{
            vec[len-1] = vec[len-1]+1;
            return vec;
        }
        vec.reverse();
        let mut j =1;
        for  i in 0..len {
            vec[i] = vec[i] + j;
            j = 0;
            if vec[i] > 9{
              j = 1;
              vec[i] = 0;
            }
        }
        if vec [len -1 ] == 0{
            vec.push(1)
        }
        vec.reverse();
        return vec;
        }
}

 可以不旋转,在头部插入,就是做一下镜像处理。

        let mut vec = digits;
    let len = vec.len();
    if vec[len -1] < 9{
        vec[len-1] = vec[len-1]+1;
        return vec;
    }
    // vec.reverse();
    // for i in 0..len-1{
    //     print!("{}  ",vec[i])
    // }
    let mut j =1;
    for  i in 0..len {
        vec[(len-1) - i] = vec[(len-1) - i] + j;
        j = 0;
        if vec[(len-1) - i] > 9{
          j = 1;
          vec[(len-1) - i] = 0;
        }
    }
    if vec [0 ] == 0{
        vec.insert(0, 1)
    }
    // vec.reverse();
    return vec;

 

posted @ 2020-07-28 14:39  州长在手  阅读(172)  评论(0编辑  收藏  举报