题目:
题解:
type Solution struct {rects [][]intsum []int
}func Constructor(rects [][]int) Solution {sum := make([]int, len(rects)+1)for i, r := range rects {a, b, x, y := r[0], r[1], r[2], r[3]sum[i+1] = sum[i] + (x-a+1)*(y-b+1)}return Solution{rects, sum}
}func (s *Solution) Pick() []int {k := rand.Intn(s.sum[len(s.sum)-1])rectIndex := sort.SearchInts(s.sum, k+1) - 1r := s.rects[rectIndex]a, b, y := r[0], r[1], r[3]da := (k - s.sum[rectIndex]) / (y - b + 1)db := (k - s.sum[rectIndex]) % (y - b + 1)return []int{a + da, b + db}
}