Rust 加一
阿新 • • 發佈:2020-07-28
加一
給定一個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。
你可以假設除了整數 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;