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

การนับตัวเลขที่มากที่สุดในแถวและคอลัมน์ของอาร์เรย์ 2D ใน JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์สองมิติของจำนวนเต็มเป็นอาร์กิวเมนต์เดียว ภารกิจคือคำนวณจำนวนของตัวเลขที่เป็นค่าสูงสุดทั้งในแถวและในคอลัมน์ของมัน

ตัวอย่าง

ถ้าอาร์เรย์นำเข้าคือ:

const arr = [
  [21, 23, 22],
  [26, 26, 25],
  [21, 25, 27]
];

ผลลัพธ์ควรเป็น:

const output = 3;

เพราะตัวเลข 3 ตัวคือ 26, 26, 27

ตัวอย่างโค้ด

const arr = [
  [21, 23, 22],
  [26, 26, 25],
  [21, 25, 27]
];
const countGreatest = (matrix = []) => {
  let rows = matrix.length;
  if (rows == 0) {
    return 0;
  }
  let cols = matrix[0].length;
  const colMax = [];
  const rowMax = [];
  let res = 0;
  for (let r = 0; r < rows; ++r) {
    for (let c = 0; c < cols; ++c) {
      rowMax[r] = Math.max(rowMax[r] || 0, matrix[r][c]);
      colMax[c] = Math.max(colMax[c] || 0, matrix[r][c]);
    }
  }
  for (let r = 0; r < rows; ++r) {
    for (let c = 0; c < cols; ++c) {
      if (matrix[r][c] == rowMax[r] && matrix[r][c] == colMax[c]) {
        res++;
      }
    }
  }
  return res;
};
console.log(countGreatest(arr));

ผลลัพธ์

3