Minimum Size Subarray Sum

Dado un array de números y un número objetivo, encontrar el mínimo subarray continuo que sumen un valor igual o superior al objetivo

Solución

impl Solution {
    pub fn min_sub_array_len(target: i32, nums: Vec<i32>) -> i32 {
        let mut left = 0;
        let mut sum = 0;
        let mut min = usize::MAX;

        for right in 0..nums.len() {
            sum += nums[right];

            while sum >= target {
                min = min.min(right - left + 1);
                sum -= nums[left];
                left += 1;
            }
        }

        if min == usize::MAX {
            0
        } else {
            min as i32
        }
    }
}

Esta solución es una sliding window que busca una suma y solo guarda el número menor que encuentre, cuando encuentra un número válido se recorre por la izquierda para ver si ese número se puede reducir.