add new solutions
This commit is contained in:
parent
7d2a6718b3
commit
1f0aa6d417
6 changed files with 258 additions and 0 deletions
48
solutions/35/q3567/solution.go
Normal file
48
solutions/35/q3567/solution.go
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue