Off-by-one on range boundaries
Wrong move: Loop endpoints miss first/last candidate.
Usually fails on: Fails on minimal arrays and exact-boundary answers.
Fix: Re-derive loops from inclusive/exclusive ranges before coding.
Move from brute-force thinking to an efficient approach using core interview patterns strategy.
Table: RequestAccepted
+----------------+---------+ | Column Name | Type | +----------------+---------+ | requester_id | int | | accepter_id | int | | accept_date | date | +----------------+---------+ (requester_id, accepter_id) is the primary key (combination of columns with unique values) for this table. This table contains the ID of the user who sent the request, the ID of the user who received the request, and the date when the request was accepted.
Write a solution to find the people who have the most friends and the most friends number.
The test cases are generated so that only one person has the most friends.
The result format is in the following example.
Example 1:
Input: RequestAccepted table: +--------------+-------------+-------------+ | requester_id | accepter_id | accept_date | +--------------+-------------+-------------+ | 1 | 2 | 2016/06/03 | | 1 | 3 | 2016/06/08 | | 2 | 3 | 2016/06/08 | | 3 | 4 | 2016/06/09 | +--------------+-------------+-------------+ Output: +----+-----+ | id | num | +----+-----+ | 3 | 3 | +----+-----+ Explanation: The person with id 3 is a friend of people 1, 2, and 4, so he has three friends in total, which is the most number than any others.
Follow up: In the real world, multiple people could have the same most number of friends. Could you find all these people in this case?
Problem summary: Table: RequestAccepted +----------------+---------+ | Column Name | Type | +----------------+---------+ | requester_id | int | | accepter_id | int | | accept_date | date | +----------------+---------+ (requester_id, accepter_id) is the primary key (combination of columns with unique values) for this table. This table contains the ID of the user who sent the request, the ID of the user who received the request, and the date when the request was accepted. Write a solution to find the people who have the most friends and the most friends number. The test cases are generated so that only one person has the most friends. The result format is in the following example.
Start with the most direct exhaustive search. That gives a correctness anchor before optimizing.
Pattern signal: General problem-solving
{"headers":{"RequestAccepted":["requester_id","accepter_id","accept_date"]},"rows":{"RequestAccepted":[[1,2,"2016/06/03"],[1,3,"2016/06/08"],[2,3,"2016/06/08"],[3,4,"2016/06/09"]]}}Source-backed implementations are provided below for direct study and interview prep.
// Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// Auto-generated Java example from rust.
class Solution {
public void exampleSolution() {
}
}
// Reference (rust):
// // Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// pub fn sql_example() -> &'static str {
// r#"
// -- Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// # Write your MySQL query statement below
// WITH
// T AS (
// SELECT requester_id, accepter_id FROM RequestAccepted
// UNION ALL
// SELECT accepter_id, requester_id FROM RequestAccepted
// )
// SELECT requester_id AS id, COUNT(1) AS num
// FROM T
// GROUP BY 1
// ORDER BY 2 DESC
// LIMIT 1;
// "#
// }
// Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// Auto-generated Go example from rust.
func exampleSolution() {
}
// Reference (rust):
// // Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// pub fn sql_example() -> &'static str {
// r#"
// -- Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// # Write your MySQL query statement below
// WITH
// T AS (
// SELECT requester_id, accepter_id FROM RequestAccepted
// UNION ALL
// SELECT accepter_id, requester_id FROM RequestAccepted
// )
// SELECT requester_id AS id, COUNT(1) AS num
// FROM T
// GROUP BY 1
// ORDER BY 2 DESC
// LIMIT 1;
// "#
// }
# Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
# Auto-generated Python example from rust.
def example_solution() -> None:
return
# Reference (rust):
# // Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
# pub fn sql_example() -> &'static str {
# r#"
# -- Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
# # Write your MySQL query statement below
# WITH
# T AS (
# SELECT requester_id, accepter_id FROM RequestAccepted
# UNION ALL
# SELECT accepter_id, requester_id FROM RequestAccepted
# )
# SELECT requester_id AS id, COUNT(1) AS num
# FROM T
# GROUP BY 1
# ORDER BY 2 DESC
# LIMIT 1;
# "#
# }
// Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
pub fn sql_example() -> &'static str {
r#"
-- Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
# Write your MySQL query statement below
WITH
T AS (
SELECT requester_id, accepter_id FROM RequestAccepted
UNION ALL
SELECT accepter_id, requester_id FROM RequestAccepted
)
SELECT requester_id AS id, COUNT(1) AS num
FROM T
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1;
"#
}
// Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// Auto-generated TypeScript example from rust.
function exampleSolution(): void {
}
// Reference (rust):
// // Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// pub fn sql_example() -> &'static str {
// r#"
// -- Accepted solution for LeetCode #602: Friend Requests II: Who Has the Most Friends
// # Write your MySQL query statement below
// WITH
// T AS (
// SELECT requester_id, accepter_id FROM RequestAccepted
// UNION ALL
// SELECT accepter_id, requester_id FROM RequestAccepted
// )
// SELECT requester_id AS id, COUNT(1) AS num
// FROM T
// GROUP BY 1
// ORDER BY 2 DESC
// LIMIT 1;
// "#
// }
Use this to step through a reusable interview workflow for this problem.
Two nested loops check every pair or subarray. The outer loop fixes a starting point, the inner loop extends or searches. For n elements this gives up to n²/2 operations. No extra space, but the quadratic time is prohibitive for large inputs.
Most array problems have an O(n²) brute force (nested loops) and an O(n) optimal (single pass with clever state tracking). The key is identifying what information to maintain as you scan: a running max, a prefix sum, a hash map of seen values, or two pointers.
Review these before coding to avoid predictable interview regressions.
Wrong move: Loop endpoints miss first/last candidate.
Usually fails on: Fails on minimal arrays and exact-boundary answers.
Fix: Re-derive loops from inclusive/exclusive ranges before coding.