| 1234567891011121314151617181920212223242526272829303132333435363738 | 
							- /**
 
-  * Definition for an interval.
 
-  * type Interval struct {
 
-  *	   Start int
 
-  *	   End   int
 
-  * }
 
-  */
 
- func findRightInterval(intervals []Interval) []int {
 
- 	n := len(intervals)
 
- 	res, starts := make([]int, n), make([][]int, n)
 
- 	for i := 0; i < n; i++ {
 
- 		starts[i] = []int{intervals[i].Start, i}
 
- 	}
 
- 	sort.Sort(ints(starts))
 
- 	for i := 0; i < n; i++ {
 
- 		beg, end := 0, n-1
 
- 		for beg <= end {
 
- 			mid := beg + (end-beg)/2
 
- 			if starts[mid][0] < intervals[i].End {
 
- 				beg = mid + 1
 
- 			} else {
 
- 				end = mid - 1
 
- 			}
 
- 		}
 
- 		if beg == n {
 
- 			res[i] = -1
 
- 		} else {
 
- 			res[i] = starts[beg][1]
 
- 		}
 
- 	}
 
- 	return res
 
- }
 
- type ints [][]int
 
- func (is ints) Len() int           { return len(is) }
 
- func (is ints) Less(i, j int) bool { return is[i][0] < is[j][0] }
 
- func (is ints) Swap(i, j int)      { is[i], is[j] = is[j], is[i] }
 
 
  |