mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
Add a sliding window function as shared here: https://gophers.slack.com/archives/C02A8LZKT/p1588980407253800
parent
127eb13fb8
commit
e5998399c8
@ -240,4 +240,23 @@ func moveToFront(needle string, haystack []string) []string {
|
||||
haystack := []string{"a", "b", "c", "d", "e"} // [a b c d e]
|
||||
haystack = moveToFront("c", haystack) // [c a b d e]
|
||||
haystack = moveToFront("f", haystack) // [f c a b d e]
|
||||
```
|
||||
|
||||
### Sliding Window
|
||||
```go
|
||||
func slidingWindow(size int, input []int) [][]int {
|
||||
// returns the input slice as the first element
|
||||
if len(input) <= size {
|
||||
return [][]int{input}
|
||||
}
|
||||
|
||||
// allocate slice at the precise size we need
|
||||
r := make([][]int, 0, len(input)-size+1)
|
||||
|
||||
for i, j := 0, size; j <= len(input); i, j = i+1, j+1 {
|
||||
r = append(r, input[i:j])
|
||||
}
|
||||
|
||||
return r
|
||||
}
|
||||
```
|
Loading…
x
Reference in New Issue
Block a user