dengxinyi %!s(int64=6) %!d(string=hai) anos
pai
achega
6d2a058a50
Modificáronse 1 ficheiros con 29 adicións e 1 borrados
  1. 29 1
      medium/436.find-right-interval.go

+ 29 - 1
medium/436.find-right-interval.go

@@ -6,5 +6,33 @@
  * }
  */
 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] }