rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn pour_water(mut heights: Vec<i32>, v: i32, k: i32) -> Vec<i32> {
        for _ in 0..v {
            let mut cur = k as usize;
            while cur > 0 && heights[cur] >= heights[cur - 1] {
                cur -= 1;
            }
            while cur < heights.len() - 1 && heights[cur] >= heights[cur + 1] {
                cur += 1;
            }
            while cur > k as usize && heights[cur] >= heights[cur - 1] {
                cur -= 1;
            }
            heights[cur] += 1;
        }
        heights
    }
}

#[test]
fn test() {
    let heights = vec![2, 1, 1, 2, 1, 2, 2];
    let v = 4;
    let k = 3;
    let output = vec![2, 2, 2, 3, 2, 2, 2];
    assert_eq!(Solution::pour_water(heights, v, k), output);

    let heights = vec![1, 2, 3, 4];
    let v = 2;
    let k = 2;
    let output = vec![2, 3, 3, 4];
    assert_eq!(Solution::pour_water(heights, v, k), output);

    let heights = vec![3, 1, 3];
    let v = 5;
    let k = 1;
    let output = vec![4, 4, 4];
    assert_eq!(Solution::pour_water(heights, v, k), output);
}