Skip to main content

rustgym/leetcode/
_989_add_to_array_form_of_integer.rs

1struct Solution;
2
3impl Solution {
4    fn add_to_array_form(mut a: Vec<i32>, mut k: i32) -> Vec<i32> {
5        let mut i = a.len() - 1;
6        while k > 0 {
7            let sum = a[i] + k;
8            a[i] = sum % 10;
9            k = sum / 10;
10            if i > 0 {
11                i -= 1;
12            } else {
13                a.insert(0, 0);
14            }
15        }
16        if a.len() > 1 && a[0] == 0 {
17            a.remove(0);
18        }
19        a
20    }
21}
22
23#[test]
24fn test() {
25    let a = vec![1, 2, 0, 0];
26    let k = 34;
27    let res = vec![1, 2, 3, 4];
28    assert_eq!(Solution::add_to_array_form(a, k), res);
29    let a = vec![2, 7, 4];
30    let k = 181;
31    let res = vec![4, 5, 5];
32    assert_eq!(Solution::add_to_array_form(a, k), res);
33    let a = vec![2, 1, 5];
34    let k = 806;
35    let res = vec![1, 0, 2, 1];
36    assert_eq!(Solution::add_to_array_form(a, k), res);
37    let a = vec![9, 9, 9, 9, 9, 9, 9, 9, 9, 9];
38    let k = 1;
39    let res = vec![1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
40    assert_eq!(Solution::add_to_array_form(a, k), res);
41}