Поиск максимума в двухмерном массиве
-
Еще одна интересная задача с массивом - для обхода первого измерения мы будем использовать счетчик
i, для обхода второго -j. Как только найдем максимальный элемент, в массивindмы запишем его “координаты” - значения счетчиковi(элемент0) иj(элемент1).let arr = [0, 0, 0]; // Инициализация массива arr[0] = [3, 2, 1]; arr[1] = [7, 8, 9]; arr[2] = [5, 6, 7]; let max = arr[0][0]; // Максимум let ind = [0, 0]; // Его индекс — массив [строка, столбец] for (i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; j++) { if (arr[i][j] > max) { max = arr[i][j]; ind[0] = i; ind[1] = j; } } } console.log('Max ' + max); console.log('Ind [' + ind[0] + '][' + ind[1] + ']');
Обратите внимание, как мы обращаемся к свойству
length. Поскольку каждый из элементов исходного массива также является массивом, то мы можем обратиться кlengthтак:arr[i].length. Конечно, мы и так знаем размерность массива, и можно было бы использовать значения длины 3 для каждого из счетчиков, но корректнее.Вообще по сути это матрицы, надеюсь Вы помните еще со школьных времен что такое матрицы? Кстати их полезно изучать потому что в наше время для разработки тех же LLM векторы и матрицы - это база.
Можно было сделать еще чуть проще и сделать сразу матрицу 3х3:
let arr = [ [3, 2, 1], [7, 8, 9], [5, 6, 7] ]Но об этом думаю затрону в других темах и уже про python.
-
let arr = [ [3, 2, 1], [7, 8, 9], [5, 6, 7] ] const max = arr.reduce((acc, row) => { const maxRow = row.reduce((acc2, item) => { return acc2 < item ? item: acc2 }, -Infinity); return acc < maxRow ? maxRow : acc; }, -Infinity) -
Еще одна интересная задача с массивом - для обхода первого измерения мы будем использовать счетчик
i, для обхода второго -j. Как только найдем максимальный элемент, в массивindмы запишем его “координаты” - значения счетчиковi(элемент0) иj(элемент1).let arr = [0, 0, 0]; // Инициализация массива arr[0] = [3, 2, 1]; arr[1] = [7, 8, 9]; arr[2] = [5, 6, 7]; let max = arr[0][0]; // Максимум let ind = [0, 0]; // Его индекс — массив [строка, столбец] for (i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; j++) { if (arr[i][j] > max) { max = arr[i][j]; ind[0] = i; ind[1] = j; } } } console.log('Max ' + max); console.log('Ind [' + ind[0] + '][' + ind[1] + ']');
Обратите внимание, как мы обращаемся к свойству
length. Поскольку каждый из элементов исходного массива также является массивом, то мы можем обратиться кlengthтак:arr[i].length. Конечно, мы и так знаем размерность массива, и можно было бы использовать значения длины 3 для каждого из счетчиков, но корректнее.Вообще по сути это матрицы, надеюсь Вы помните еще со школьных времен что такое матрицы? Кстати их полезно изучать потому что в наше время для разработки тех же LLM векторы и матрицы - это база.
Можно было сделать еще чуть проще и сделать сразу матрицу 3х3:
let arr = [ [3, 2, 1], [7, 8, 9], [5, 6, 7] ]Но об этом думаю затрону в других темах и уже про python.
Пользователь @kirilljsx написал в Поиск максимума в двухмерном массиве:
let arr = [
[3, 2, 1];
[7, 8, 9];
[5, 6, 7];
]ряды в массиве пишутся через запятую
-
Пользователь @kirilljsx написал в Поиск максимума в двухмерном массиве:
let arr = [
[3, 2, 1];
[7, 8, 9];
[5, 6, 7];
]ряды в массиве пишутся через запятую
@Jspi косячнул, поправлю))
-
let arr = [ [3, 2, 1], [7, 8, 9], [5, 6, 7] ] const max = arr.reduce((acc, row) => { const maxRow = row.reduce((acc2, item) => { return acc2 < item ? item: acc2 }, -Infinity); return acc < maxRow ? maxRow : acc; }, -Infinity)@Jspi У тебя
reduceвообще для всего применяется? )))) -
@kirilljsx ну да, через редюс можно любые методы работы с массивами реализовать)
-
@kirilljsx ну да, через редюс можно любые методы работы с массивами реализовать)
@Jspi Кажется я постарел

© 2024 - 2025 ExLends, Inc. Все права защищены.