ได้รับเมทริกซ์ (อาร์เรย์ 2 มิติ) ของตัวเลขที่ไม่ซ้ำกัน ต้องคืนค่า "Lucky Numbers" ทั้งหมด ซึ่งหมายถึงสมาชิกที่เป็นค่าน้อยที่สุดในแถวของมัน และเป็นค่ามากที่สุดในคอลัมน์ของมัน
ตัวอย่าง: เมทริกซ์
const arr = [ [3, 7, 8], [9, 11, 13], [15, 16, 17] ];
ผลลัพธ์ควรเป็น [15] เพราะ 15 เป็นค่าน้อยที่สุดในแถวที่ 3 และมากที่สุดในคอลัมน์แรก
ตัวอย่างโค้ด
const arr = [
[3, 7, 8],
[9, 11, 13],
[15, 16, 17]
];
const luckyNumbers = (arr, res = []) => {
let M = arr.length, N = arr[0].length;
let min = Array(M).fill(Infinity);
let max = Array(N).fill(-Infinity);
for (let i = 0; i < M; ++i)
for (let j = 0; j < N; ++j) {
min[i] = Math.min(min[i], arr[i][j]);
max[j] = Math.max(max[j], arr[i][j]);
}
for (let i = 0; i < M; ++i)
for (let j = 0; j < N; ++j)
if (min[i] === max[j])
res.push(arr[i][j]);
return res;
};
console.log(luckyNumbers(arr));
ผลลัพธ์
ค่าที่แสดงในคอนโซลจะเป็นดังนี้:
[15]