Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript 행렬의 행운의 숫자

<시간/>

고유한 숫자의 m * n 행렬이 주어지면 2차원 배열(행렬)의 모든 행운의 숫자를 순서에 관계없이 반환해야 합니다.

행운의 숫자는 행의 최소 요소와 열의 최대 요소인 행렬의 요소입니다.

예를 들어 - 입력 배열이 -

인 경우
const arr = [
   [3,7,8],
   [9,11,13],
   [15,16,17]
];

그러면 출력은 다음과 같아야 합니다. -

const output = [15];

15는 행의 최소값과 열의 최대값이기 때문에 유일한 행운의 숫자입니다.

예시

이에 대한 코드는 -

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]