Solving Leetcode Interviews in Seconds with AI: Generate Random Point in a Circle
Introduction
In this blog post, we will explore how to solve the LeetCode problem "478" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.
Problem Statement
Given the radius and the position of the center of a circle, implement the function randPoint which generates a uniform random point inside the circle. Implement the Solution class: Solution(double radius, double x_center, double y_center) initializes the object with the radius of the circle radius and the position of the center (x_center, y_center). randPoint() 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 [x, y]. Example 1: Input ["Solution", "randPoint", "randPoint", "randPoint"] [[1.0, 0.0, 0.0], [], [], []] Output [null, [-0.02493, -0.38077], [0.82314, 0.38945], [0.36572, 0.17248]] Explanation Solution solution = new Solution(1.0, 0.0, 0.0); solution.randPoint(); // return [-0.02493, -0.38077] solution.randPoint(); // return [0.82314, 0.38945] solution.randPoint(); // return [0.36572, 0.17248] Constraints: 0 < radius <= 108 -107 <= x_center, y_center <= 107 At most 3 * 104 calls will be made to randPoint.
Explanation
Here's a breakdown of the solution, followed by the Python code:
- Generate random radius and angle: Generate a random radius
rwithin the range[0, radius]and a random anglethetawithin[0, 2*pi]. The radius is generated proportional to the square root to ensure uniform distribution within the circle. - Convert to Cartesian coordinates: Convert the polar coordinates
(r, theta)to Cartesian coordinates(x, y)using the formulasx = r * cos(theta)andy = r * sin(theta). Translate to circle's center: Add the center coordinates
(x_center, y_center)to(x, y)to get the final random point within the circle.Runtime complexity: O(1), Storage complexity: O(1)
Code
import random
import math
class Solution:
def __init__(self, radius: float, x_center: float, y_center: float):
self.radius = radius
self.x_center = x_center
self.y_center = y_center
def randPoint(self) -> list[float]:
r = self.radius * math.sqrt(random.random())
theta = 2 * math.pi * random.random()
x = self.x_center + r * math.cos(theta)
y = self.y_center + r * math.sin(theta)
return [x, y]