add new solutions

This commit is contained in:
kanna5 2026-01-05 16:48:03 +09:00
parent ca24d0a56a
commit 0c73608ce5
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
36 changed files with 791 additions and 0 deletions

View file

@ -0,0 +1,49 @@
package q3318
import "slices"
type NumOccur struct {
num, occur int
}
func xSum(x int, occurances map[int]int, buf []NumOccur) int {
buf = buf[:]
for n, o := range occurances {
buf = append(buf, NumOccur{n, o})
}
slices.SortFunc(buf, func(a, b NumOccur) int {
if a.occur != b.occur {
return b.occur - a.occur
}
return b.num - a.num
})
sum := 0
for i := 0; i < x && i < len(buf); i++ {
sum += buf[i].num * buf[i].occur
}
return sum
}
func findXSum(nums []int, k int, x int) []int {
ret := make([]int, len(nums)-k+1)
buf := make([]NumOccur, k)
occur := make(map[int]int, k)
for i := range nums {
occur[nums[i]]++
if i >= k {
occur[nums[i-k]]--
if occur[nums[i-k]] == 0 {
delete(occur, nums[i-k])
}
}
if i >= k-1 {
ret[i-k+1] = xSum(x, occur, buf)
}
}
return ret
}
var _ = findXSum

View file

@ -0,0 +1,25 @@
package q3349
func hasIncreasingSubarrays(nums []int, k int) bool {
seqLen := 1
prevSeqTail := -2
for i := 1; i < len(nums); i++ {
if nums[i-1] < nums[i] {
seqLen++
if seqLen == k && prevSeqTail == i-k {
return true
}
if seqLen >= 2*k {
return true
}
} else {
if seqLen >= k {
prevSeqTail = i - 1
}
seqLen = 1
}
}
return k == 1
}
var _ = hasIncreasingSubarrays

View file

@ -0,0 +1,28 @@
package q3354
func countValidSelections(nums []int) int {
sumR := 0
for i := range nums {
sumR += nums[i]
}
sumL := 0
nValid := 0
for i := range nums {
sumR -= nums[i]
if i > 0 {
sumL += nums[i-1]
}
if nums[i] == 0 {
diff := sumL - sumR
if diff == 0 {
nValid += 2
} else if diff*diff == 1 {
nValid++
}
}
}
return nValid
}
var _ = countValidSelections

View file

@ -0,0 +1,12 @@
package q3370
func smallestNumber(n int) int {
i := 0
for n > 0 {
n >>= 1
i++
}
return 1<<i - 1
}
var _ = smallestNumber