Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "sort"
  6. )
  7.  
  8. type byteRange struct {
  9. start int64
  10. end int64
  11. }
  12.  
  13. type byteRanges []*byteRange
  14.  
  15. func (brs byteRanges) Continuous(start int64, end int64) bool {
  16. sort.Slice(brs, func(i, j int) bool {
  17. return brs[i].start < brs[j].start
  18. })
  19.  
  20. var (
  21. longestReach int64
  22. in bool
  23. )
  24.  
  25. for _, br := range brs {
  26. if !in {
  27. // first br satrts laying over the target
  28. if br.start <= start && br.end >= start {
  29. longestReach = br.end
  30. in = true
  31. }
  32. continue
  33. }
  34. if in && longestReach < br.start-1 {
  35. break
  36. }
  37. longestReach = br.end
  38. }
  39.  
  40. return in && longestReach >= end
  41. }
  42.  
  43. func main() {
  44. brs := byteRanges{{5, 9}, {10, 20}}
  45. fmt.Println(brs.Continuous(0, 2))
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement