rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn integer_replacement(n: i32) -> i32 {
        Self::dfs(n as u32) as i32
    }
    fn dfs(mut n: u32) -> usize {
        if n == 1 {
            0
        } else {
            let mut zeros = 0;
            while n & 1 == 0 {
                n >>= 1;
                zeros += 1;
            }
            if n == 1 {
                zeros
            } else {
                zeros + 1 + Self::dfs(n + 1).min(Self::dfs(n - 1))
            }
        }
    }
}

#[test]
fn test() {
    let n = 8;
    let res = 3;
    assert_eq!(Solution::integer_replacement(n), res);
    let n = 7;
    let res = 4;
    assert_eq!(Solution::integer_replacement(n), res);
    let n = 2147483647;
    let res = 32;
    assert_eq!(Solution::integer_replacement(n), res);
}