import { getQuestion } from "@/lib/api"; import { Badge } from "@/components/ui/badge"; import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"; import { CodeBlock } from "@/components/ui/code-block"; import { getDifficultyColor, capitalize } from "@/lib/utils"; import Link from "next/link"; import { notFound } from "next/navigation"; export default async function QuestionDetailPage({ params, }: { params: Promise<{ slug: string }>; }) { const { slug } = await params; let question; try { question = await getQuestion(slug); } catch { notFound(); } return (

{question.title}

{capitalize(question.difficulty)}
{question.categories.map((cat) => ( {cat.name} ))} {question.patterns.map((pat) => ( {pat.name} ))}
{question.leetcode_url && ( View on LeetCode )}
Problem
{question.description}
{question.constraints && ( Constraints
              {question.constraints}
            
)} {question.examples && question.examples.length > 0 && ( Examples {question.examples.map((example, i) => (
Input: {example.input}
Output: {example.output}
{example.explanation && (
{example.explanation}
)}
))}
)} {question.explanation && ( <> Approach {question.explanation.approach} Intuition {question.explanation.intuition} Complexity Analysis
Time: {question.explanation.time_complexity}
Space: {question.explanation.space_complexity}
{question.explanation.complexity_explanation && (
{question.explanation.complexity_explanation}
)}
{question.explanation.common_pitfalls && question.explanation.common_pitfalls.length > 0 && ( Common Pitfalls {question.explanation.common_pitfalls.map((pitfall, i) => (

{pitfall.title}

{pitfall.description}

{pitfall.wrong_approach && (
Wrong: {pitfall.wrong_approach}
)} {pitfall.correct_approach && (
Correct: {pitfall.correct_approach}
)}
))}
)} {question.explanation.key_takeaways && question.explanation.key_takeaways.length > 0 && ( Key Takeaways
    {question.explanation.key_takeaways.map((takeaway, i) => (
  • {takeaway}
  • ))}
)} )} {question.solutions.length > 0 && ( Solutions {question.solutions.map((solution) => (

{solution.approach_name}

{solution.is_optimal && ( Optimal )}
{solution.explanation && (

{solution.explanation}

)}
))}
)}
); }