Table of Contents

Problem

  • Write a function that takes in an array of flight objects, a fare limit, and a flight origin,
  • return an array of flight destinations that with the fare not higher than the fare limit.
  • Combined flights are allowed.
type Flight = {
  origin: string;
  destination: string;
  fare: number;
};

function findFlights(
  flights: Flight[],
  limit: number,
  origin: string,
): string[] {
  // implement it
  const result = new Set<string>();

  function dfs(origin: string, limit: number) {
    for (const f of flights) {
      if (origin === f.origin) {
        const newLimit = limit - f.fare;
        if (newLimit < 0) continue;
        result.add(f.destination);
        dfs(f.destination, newLimit);
      }
    }
  }

  dfs(origin, limit);

  return Array.from(result);
}

// Example usage:
const flights: Flight[] = [
  { origin: "A", destination: "B", fare: 50 },
  { origin: "B", destination: "C", fare: 30 },
  { origin: "C", destination: "D", fare: 20 },
  { origin: "A", destination: "D", fare: 100 },
];

console.log(findFlights(flights, 100, "A")); // Output: ['B', 'C', 'D']

haochen xu