add new solutions

This commit is contained in:
Yiyang Kang 2026-03-21 14:44:38 +09:00
parent 7d2a6718b3
commit 1f0aa6d417
Signed by: kkyy
SSH key fingerprint: SHA256:lJSbAzC3MvrSORdvIVK6h/3g+rVKJNzM7zq0MgA9WKY
6 changed files with 258 additions and 0 deletions

View file

@ -0,0 +1,48 @@
// Package q3567 implements a solution for https://leetcode.com/problems/minimum-absolute-difference-in-sliding-submatrix/
package q3567
import "slices"
var buf = make([]int, 30*30)
const INF = 1<<63 - 1
func minAbsDiffK(grid [][]int, xOffset, k int) int {
if k == 1 {
return 0
}
numbers := buf[:0]
for y := range k {
for x := range k {
numbers = append(numbers, grid[y][x+xOffset])
}
}
slices.Sort(numbers)
minDiff := INF
for i := 1; i < len(numbers); i++ {
if numbers[i] == numbers[i-1] {
continue
}
minDiff = min(minDiff, numbers[i]-numbers[i-1])
}
if minDiff == INF {
return 0
}
return minDiff
}
func minAbsDiff(grid [][]int, k int) [][]int {
w, h := len(grid[0]), len(grid)
for i := 0; i < h-k+1; i++ {
for j := 0; j < w-k+1; j++ {
grid[i][j] = minAbsDiffK(grid[i:], j, k)
}
}
for i := range h - k + 1 {
grid[i] = grid[i][:w-k+1]
}
return grid[:h-k+1]
}
var _ = minAbsDiff