add new solutions
This commit is contained in:
parent
ca24d0a56a
commit
0c73608ce5
36 changed files with 791 additions and 0 deletions
49
solutions/33/q3318/solution.go
Normal file
49
solutions/33/q3318/solution.go
Normal 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
|
||||
25
solutions/33/q3349/solution.go
Normal file
25
solutions/33/q3349/solution.go
Normal 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
|
||||
28
solutions/33/q3354/solution.go
Normal file
28
solutions/33/q3354/solution.go
Normal 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
|
||||
12
solutions/33/q3370/solution.go
Normal file
12
solutions/33/q3370/solution.go
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue