Given a list of non-overlapping axis-aligned rectangles rects
, write a function pick
which randomly and uniformily picks an integer point in the space covered by the rectangles.
Note:
<li>An <strong>integer point</strong> is a point that has integer coordinates. </li>
<li>A point on the perimeter of a rectangle is <strong>included</strong> in the space covered by the rectangles. </li>
<li><code>i</code>th rectangle = <code>rects[i]</code> = <code>[x1,y1,x2,y2]</code>, where <code>[x1, y1]</code> are the integer coordinates of the bottom-left corner, and <code>[x2, y2]</code> are the integer coordinates of the top-right corner.</li>
<li>length and width of each rectangle does not exceed <code>2000</code>.</li>
<li><code>1 <= rects.length <= 100</code></li>
<li><code>pick</code> return a point as an array of integer coordinates <code>[p_x, p_y]</code></li>
<li><code>pick</code> is called at most <code>10000</code> times.</li>
Example 1:
Input: ["Solution","pick","pick","pick"] [[[[1,1,5,5]]],[],[],[]] Output: [null,[4,1],[4,1],[3,3]]
Example 2:
Input: ["Solution","pick","pick","pick","pick","pick"] [[[[-2,-2,-1,-1],[1,0,3,0]]],[],[],[],[],[]] Output: [null,[-1,-2],[2,0],[-2,-1],[3,0],[-2,-2]]
Explanation of Input Syntax:
The input is two lists: the subroutines called and their arguments. Solution
's constructor has one argument, the array of rectangles rects
. pick
has no arguments. Arguments are always wrapped with a list, even if there aren't any.