Skip to content

Commit 3e0fd32

Browse files
Sync LeetCode submission Runtime - 4 ms (95.44%), Memory - 34.9 MB (86.32%)
1 parent db15d9a commit 3e0fd32

2 files changed

Lines changed: 63 additions & 0 deletions

File tree

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<p>Given the radius and the position of the center of a circle, implement the function <code>randPoint</code> which generates a uniform random point inside the circle.</p>
2+
3+
<p>Implement the <code>Solution</code> class:</p>
4+
5+
<ul>
6+
<li><code>Solution(double radius, double x_center, double y_center)</code> initializes the object with the radius of the circle <code>radius</code> and the position of the center <code>(x_center, y_center)</code>.</li>
7+
<li><code>randPoint()</code> returns a random point inside the circle. A point on the circumference of the circle is considered to be in the circle. The answer is returned as an array <code>[x, y]</code>.</li>
8+
</ul>
9+
10+
<p>&nbsp;</p>
11+
<p><strong class="example">Example 1:</strong></p>
12+
13+
<pre>
14+
<strong>Input</strong>
15+
[&quot;Solution&quot;, &quot;randPoint&quot;, &quot;randPoint&quot;, &quot;randPoint&quot;]
16+
[[1.0, 0.0, 0.0], [], [], []]
17+
<strong>Output</strong>
18+
[null, [-0.02493, -0.38077], [0.82314, 0.38945], [0.36572, 0.17248]]
19+
20+
<strong>Explanation</strong>
21+
Solution solution = new Solution(1.0, 0.0, 0.0);
22+
solution.randPoint(); // return [-0.02493, -0.38077]
23+
solution.randPoint(); // return [0.82314, 0.38945]
24+
solution.randPoint(); // return [0.36572, 0.17248]
25+
</pre>
26+
27+
<p>&nbsp;</p>
28+
<p><strong>Constraints:</strong></p>
29+
30+
<ul>
31+
<li><code>0 &lt;&nbsp;radius &lt;= 10<sup>8</sup></code></li>
32+
<li><code>-10<sup>7</sup> &lt;= x_center, y_center &lt;= 10<sup>7</sup></code></li>
33+
<li>At most <code>3 * 10<sup>4</sup></code> calls will be made to <code>randPoint</code>.</li>
34+
</ul>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
double radius;
3+
double x_center;
4+
double y_center;
5+
6+
bool valid(double x, double y) {
7+
return pow(x - x_center, 2) + pow(y - y_center, 2) <= pow(radius, 2);
8+
}
9+
10+
public:
11+
Solution(double radius, double x_center, double y_center) : radius(radius), x_center(x_center), y_center(y_center) {
12+
srand(time(0));
13+
}
14+
15+
vector<double> randPoint() {
16+
double x=-1e9, y=-1e9;
17+
while (!valid(x, y)) {
18+
x = x_center + (((double)rand()) / RAND_MAX - 0.5) * 2 * radius;
19+
y = y_center + (((double)rand()) / RAND_MAX - 0.5) * 2 * radius;
20+
}
21+
return {x, y};
22+
}
23+
};
24+
25+
/**
26+
* Your Solution object will be instantiated and called as such:
27+
* Solution* obj = new Solution(radius, x_center, y_center);
28+
* vector<double> param_1 = obj->randPoint();
29+
*/

0 commit comments

Comments
 (0)