Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหา Lucky Numbers ในเมทริกซ์ด้วย JavaScript

ได้รับเมทริกซ์ (อาร์เรย์ 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]