Function sliding_window::sliding_window_minimum
source · pub fn sliding_window_minimum<T>(a: &[T], window_width: usize) -> Vec<T>where
T: Ord + Clone,
Expand description
幅 window_width
の区間すべてに対し最小値を求めます。
配列 a
に対し次で定める配列 b
を求めます。
a
の長さa.len()
をn
とするb[0]
:min(a[0], a[1], ..., a[window_width - 1])
b[1]
:min(a[1], a[2], ..., a[window_width])
- …
b[n - window_width]
:min(a[n - window_width], ..., a[n - 2], a[n - 1])
Panics
if window_width
is zero or is greater than a.len()
.
Examples
use sliding_window::sliding_window_minimum;
let a = vec![4, 7, 7, 8, 5, 7, 6, 9, 9, 2, 8, 3];
let minimums = sliding_window_minimum(&a, 6);
assert_eq!(
minimums,
vec![
4, // 4 7 7 8 5 7
5, // 7 7 8 5 7 6
5, // 7 8 5 7 6 9
5, // 8 5 7 6 9 9
2, // 5 7 6 9 9 2
2, // 7 6 9 9 2 8
2, // 6 9 9 2 8 3
]
);