Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "sort"
- )
- type byteRange struct {
- start int64
- end int64
- }
- type byteRanges []*byteRange
- func (brs byteRanges) Continuous(start int64, end int64) bool {
- sort.Slice(brs, func(i, j int) bool {
- return brs[i].start < brs[j].start
- })
- var (
- longestReach int64
- in bool
- )
- for _, br := range brs {
- if !in {
- // first br satrts laying over the target
- if br.start <= start && br.end >= start {
- longestReach = br.end
- in = true
- }
- continue
- }
- if in && longestReach < br.start-1 {
- break
- }
- longestReach = br.end
- }
- return in && longestReach >= end
- }
- func main() {
- brs := byteRanges{{5, 9}, {10, 20}}
- fmt.Println(brs.Continuous(0, 2))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement