add new solutions
This commit is contained in:
parent
886b5e0a8e
commit
67cad91898
47 changed files with 1549 additions and 1 deletions
38
solutions/12/q1268/solution.go
Normal file
38
solutions/12/q1268/solution.go
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
package q1268
|
||||
|
||||
import "slices"
|
||||
|
||||
func prefixSearch(products []string, prefix string) []string {
|
||||
ret := make([]string, 0, 3)
|
||||
pfLen := len(prefix)
|
||||
|
||||
l, r := 0, len(products)
|
||||
for l < r {
|
||||
m := (l + r) / 2
|
||||
if products[m][:min(len(products[m]), pfLen)] >= prefix {
|
||||
r = m
|
||||
} else {
|
||||
l = m + 1
|
||||
}
|
||||
}
|
||||
for ; l < len(products) && len(products[l]) >= pfLen && products[l][:pfLen] == prefix; l++ {
|
||||
ret = append(ret, products[l])
|
||||
if len(ret) == 3 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
func suggestedProducts(products []string, searchWord string) [][]string {
|
||||
slices.Sort(products)
|
||||
ret := make([][]string, 0, len(searchWord))
|
||||
|
||||
for i := range len(searchWord) {
|
||||
ret = append(ret, prefixSearch(products, searchWord[:i+1]))
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
var _ = suggestedProducts
|
||||
Loading…
Add table
Add a link
Reference in a new issue