# 20.03.2026 [3567. Minimum Absolute Difference in Sliding Submatrix]
Mid diffs in k*k submatrices #medium #matrix
20.03.2026
3567. Minimum Absolute Difference in Sliding Submatrix medium blog post substack youtube
Join me on Telegram
Problem TLDR
Mid diffs in k*k submatrices #medium #matrix
Intuition
Just brute-force, the size is small, 30
Approach
Kotlin: toSortedSet(), windowed
Rust: itertools allows to use sorted in a single expression, tuple_windows
Complexity
Time complexity: $$O(nmk^2)$$
Space complexity: $$O(nmk^2)$$
Code
// 86ms
fun minAbsDiff(g: Array<IntArray>, k: Int)=
List(g.size-k+1) { y -> List(g[0].size-k+1) { x ->
List(k*k){ g[y+it/k][x+it%k] }.toSortedSet()
.windowed(2) {it[1]-it[0]}.minOrNull() ?: 0
}}
// 2ms
pub fn min_abs_diff(g: Vec<Vec<i32>>, k: i32) -> Vec<Vec<i32>> {
let k = k as usize; (0..=g.len()-k).map(|y| (0..=g[0].len()-k).map(|x|
(0..k*k).map(|i| g[y+i/k][x+i%k]).sorted().dedup().tuple_windows()
.map(|(a,b)|b-a).min().unwrap_or(0)
).collect()).collect()
}

