Countries You Can Safely Invest In — LeetCode 1501 Python Solution

MediumLeetCode PremiumDatabase
Problem
#1501
Reading time
4 min

Table schema

SQL
Table Person: +----------------+---------+ | Column Name | Type | +----------------+---------+ | id | int | | name | varchar | | phone_number | varchar | +----------------+---------+ id is the column of unique values for this table. Each row of this table contains the name of a person and their phone number.

Example

SQL
+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| id             | int     |
| name           | varchar |
| phone_number   | varchar |
+----------------+---------+
id is the column of unique values for this table.
Each row of this table contains the name of a person and their phone number.
Phone number will be in the form 'xxx-yyyyyyy' where xxx is the country code (3 characters) and yyyyyyy is the phone number (7 characters) where x and y are digits. Both can contain leading zeros.

Python solution

Python
import duckdb
import pandas as pd

# Pass input tables as keyword arguments matching the SQL table names.
def solution(**tables) -> pd.DataFrame:
    con = duckdb.connect()
    for name, df in tables.items():
        con.register(name, df)
    return con.execute("""SELECT country
FROM
    (
        SELECT c.name AS country, AVG(duration) AS duration
        FROM
            Person
            JOIN Calls ON id IN(caller_id, callee_id)
            JOIN Country AS c ON LEFT(phone_number, 3) = country_code
        GROUP BY 1
    ) AS t
WHERE duration > (SELECT AVG(duration) FROM Calls);""").df()

Complexity

MeasureComplexity
TimeO(n log n) (typical)
SpaceO(n) auxiliary

Related problems

Frequently asked questions

How hard is LeetCode 1501. Countries You Can Safely Invest In?
LeetCode 1501. Countries You Can Safely Invest In is rated Medium on LeetCode.
What topics does LeetCode 1501. Countries You Can Safely Invest In cover?
LeetCode 1501. Countries You Can Safely Invest In is tagged Database on LeetCode.
Is LeetCode 1501. Countries You Can Safely Invest In a premium problem?
Yes. LeetCode 1501. Countries You Can Safely Invest In is a LeetCode Premium problem, so the full statement and test cases require a paid LeetCode subscription.

Stuck on problems like this in a live interview?

Stealth Interview is a desktop app for macOS and Windows. It reads the problem off your screen and returns a working solution with a step-by-step explanation and its time and space complexity — invisible to screen sharing.

Get Stealth Interview