Compare commits

..

2 commits

Author SHA1 Message Date
97a358379e chore: update dependencies 2026-03-01 13:47:13 +09:00
2012261d3d add new solutions 2026-03-01 13:47:13 +09:00
9 changed files with 212 additions and 13 deletions

6
go.mod
View file

@ -1,6 +1,6 @@
module leetcode-go module leetcode-go
go 1.25.5 go 1.26
require ( require (
github.com/emirpasic/gods/v2 v2.0.0-alpha github.com/emirpasic/gods/v2 v2.0.0-alpha
@ -10,6 +10,6 @@ require (
require ( require (
github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-isatty v0.0.20 // indirect
golang.org/x/sys v0.40.0 // indirect golang.org/x/sys v0.41.0 // indirect
golang.org/x/text v0.33.0 // indirect golang.org/x/text v0.34.0 // indirect
) )

14
go.sum
View file

@ -1,7 +1,5 @@
github.com/emirpasic/gods/v2 v2.0.0-alpha h1:dwFlh8pBg1VMOXWGipNMRt8v96dKAIvBehtCt6OtunU= github.com/emirpasic/gods/v2 v2.0.0-alpha h1:dwFlh8pBg1VMOXWGipNMRt8v96dKAIvBehtCt6OtunU=
github.com/emirpasic/gods/v2 v2.0.0-alpha/go.mod h1:W0y4M2dtBB9U5z3YlghmpuUhiaZT2h6yoeE+C1sCp6A= github.com/emirpasic/gods/v2 v2.0.0-alpha/go.mod h1:W0y4M2dtBB9U5z3YlghmpuUhiaZT2h6yoeE+C1sCp6A=
github.com/k0kubun/pp/v3 v3.5.0 h1:iYNlYA5HJAJvkD4ibuf9c8y6SHM0QFhaBuCqm1zHp0w=
github.com/k0kubun/pp/v3 v3.5.0/go.mod h1:5lzno5ZZeEeTV/Ky6vs3g6d1U3WarDrH8k240vMtGro=
github.com/k0kubun/pp/v3 v3.5.1 h1:fS8Xt0MWVVSiKwfXeIdE0WJlktdA87/gt0Hs0+j2R2s= github.com/k0kubun/pp/v3 v3.5.1 h1:fS8Xt0MWVVSiKwfXeIdE0WJlktdA87/gt0Hs0+j2R2s=
github.com/k0kubun/pp/v3 v3.5.1/go.mod h1:s7qPOSp65uuilpprLJs2yDi9DNd7JGyWJPtPvDFpG9w= github.com/k0kubun/pp/v3 v3.5.1/go.mod h1:s7qPOSp65uuilpprLJs2yDi9DNd7JGyWJPtPvDFpG9w=
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
@ -9,11 +7,7 @@ github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stg
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=

View file

@ -0,0 +1,27 @@
package q1461
func hasAllCodes(s string, k int) bool {
if len(s) < (1<<k)+k-1 {
return false
}
seen := make([]bool, 1<<k)
nSeen := 0
c := 0
for i := range len(s) {
c = (c << 1) + int(s[i]-'0')
if i+1 >= k {
if i >= k {
c -= int(s[i-k]-'0') << k
}
if !seen[c] {
seen[c] = true
nSeen++
}
}
}
return nSeen == 1<<k
}
var _ = hasAllCodes

View file

@ -0,0 +1,20 @@
// Package q1680 implements a solution for https://leetcode.com/problems/concatenation-of-consecutive-binary-numbers/
package q1680
const MOD int = 1e9 + 7
func concatenatedBinary(n int) int {
ret := 0
binLen := 1
for c := 1; c <= n; c++ {
if 1<<binLen <= c {
binLen++
}
ret = (ret<<binLen + c) % MOD
}
return ret
}
var _ = concatenatedBinary

View file

@ -0,0 +1,12 @@
// Package q1689 implements a solution for https://leetcode.com/problems/partitioning-into-minimum-number-of-deci-binary-numbers/
package q1689
func minPartitions(n string) int {
maxDigit := 0
for i := range len(n) {
maxDigit = max(maxDigit, int(n[i]-'0'))
}
return maxDigit
}
var _ = minPartitions

View file

@ -0,0 +1,71 @@
// Package q3666 implements a solution for https://leetcode.com/problems/minimum-operations-to-equalize-binary-string/
package q3666
import (
"strings"
rbt "github.com/emirpasic/gods/v2/trees/redblacktree"
)
type void struct{}
const INF = 1<<63 - 1
var (
qBuf = make([]int, 0, 1e5+1)
nOpsBuf = make([]int, 0, 1e5+1)
)
func minOperations(s string, k int) int {
zeros := strings.Count(s, "0")
length := len(s)
if zeros%2 == 1 && k%2 == 0 {
return -1
}
if k == length && zeros != 0 && zeros != length {
return -1
}
if zeros%k == 0 {
return zeros / k
}
nOps := nOpsBuf[:length+1]
sets := [2]*rbt.Tree[int, void]{
rbt.New[int, void](), rbt.New[int, void](),
}
for i := range length + 1 {
sets[i%2].Put(i, void{})
nOps[i] = INF
}
nOps[zeros] = 0
sets[zeros%2].Remove(zeros)
queue := qBuf[:0]
queue = append(queue, zeros)
for ; len(queue) > 0; queue = queue[1:] {
z := queue[0]
par := (z + k) % 2
minFlipZ := max(k-(length-z), 0)
maxFlipZ := min(k, z)
minNewZ := z + k - 2*maxFlipZ
maxNewZ := z + k - 2*minFlipZ
next, found := sets[par].Ceiling(minNewZ)
for ; found && next.Key <= maxNewZ; next, found = sets[par].Ceiling(minNewZ) {
nextZ := next.Key
sets[par].Remove(nextZ)
nOps[nextZ] = nOps[z] + 1
if nextZ%k == 0 {
return nOps[nextZ] + nextZ/k
}
queue = append(queue, nextZ)
}
}
return -1
}
var _ = minOperations

View file

@ -0,0 +1,34 @@
package q762
var isPrime = [21]bool{}
func init() {
for _, n := range []int{
2, 3, 5, 7, 11, 13, 17, 19,
} {
isPrime[n] = true
}
}
func count1s(n int) int {
cnt := 0
for n > 0 {
if n%2 == 1 {
cnt++
}
n >>= 1
}
return cnt
}
func countPrimeSetBits(left, right int) int {
cnt := 0
for n := left; n <= right; n++ {
if isPrime[count1s(n)] {
cnt++
}
}
return cnt
}
var _ = countPrimeSetBits

View file

@ -0,0 +1,23 @@
package q799
func champagneTower(poured, query_row, query_glass int) float64 {
buf := [100]float64{float64(poured)}
for r := range query_row + 1 {
var spill float64 = 0
for c := range r + 1 {
if r == query_row && c == query_glass {
return max(buf[c], 1)
}
if buf[c] > 1 {
buf[c] = (buf[c] - 1) / 2
buf[c], spill = buf[c]+spill, buf[c]
} else {
buf[c], spill = spill, 0
}
}
}
return 0
}
var _ = champagneTower

View file

@ -0,0 +1,18 @@
package q868
func binaryGap(n int) int {
maxGap := -1
gap := -99
for n > 0 {
if n%2 == 0 {
gap++
} else {
maxGap = max(maxGap, gap)
gap = 0
}
n >>= 1
}
return maxGap + 1
}
var _ = binaryGap