1. 程式人生 > 實用技巧 >Rust 加一

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;