Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Generate Random Point in a Circle

Updated
2 min read

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 r within the range [0, radius] and a random angle theta within [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 formulas x = r * cos(theta) and y = 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]

More from this blog

C

Chatmagic blog

2894 posts