Show the top k brands by rating. This is v3's search, repeated k times: find the best brand, mark it as taken, then search again among the brands that are not taken yet, until you have k brands in rank order.
You start with:
const brands: string[] = ["TechPro", "MegaCorp", "Quantum", "NeoByte", "Zenith"];
const ratings: number[] = [4, 5, 3, 5, 4];
const k: number = 3;
Build:
1. MegaCorp (5) 2. NeoByte (5) 3. TechPro (4)
Rules:
- Repeat v3's search
ktimes. Each round looks only at brands that are not taken yet and picks the one with the highest rating, then marks it as taken (one true/false flag per brand). - Ties go to the brand listed first: keep the first brand you find and replace it only on a strictly higher rating.
kis never larger than the number of brands.- Each line is
"rank. Brand (rating)", starting at rank 1. - Print the lines, one per line, with
console.log(...).
Start with the two declarations
const used: boolean[] = new Array(ratings.length).fill(false); and const lines: string[] = [];. A flag tells whether that position is already taken.
Each round is v3's search: nothing found yet, scan every position, skip taken ones, keep the first candidate and replace it only on a strictly higher rating. Then mark the winner as taken and add its line.
const brands: string[] = ["TechPro", "MegaCorp", "Quantum", "NeoByte", "Zenith"];
const ratings: number[] = [4, 5, 3, 5, 4];
const k: number = 3;
const used: boolean[] = new Array(ratings.length).fill(false);
const lines: string[] = [];
for (let rank = 1; rank <= k; rank++) {
let bestIndex: number = -1;
for (let i = 0; i < ratings.length; i++) {
if (!used[i]) {
if (bestIndex === -1 || ratings[i] > ratings[bestIndex]) {
bestIndex = i;
}
}
}
used[bestIndex] = true;
lines.push(rank + ". " + brands[bestIndex] + " (" + ratings[bestIndex] + ")");
}
console.log(lines.join("\n"));
Free plan: 30 tutor messages. Premium is unlimited.
Saved
Ctrl + Enter to check
