@alexsteadfast
I am noob

Как реализовать поставленную задачу?

Задача
Напишите программу, которая вводит с клавиатуры непустой массив целых чисел, и выводит числе локальных максимумов (Элемент является локальным максимумом, если он не имеет соседей, больше чем он сам)
Сделал программу, которая слева и сверху соседей проверяет, никак не могу понять как справа и сверху их проверить. Помогите плиз)
function LocalMax(col, str , arr , x , y) {
       console.log(arr[x][y]);  
       if(x > 0){
           var gr = x - 1;
           console.log('Текущий = ' + arr[x][y]);
           if(arr[x][y] > arr[gr][y]){
              console.log('Элемент больше соседнего на строке сверху');
              console.log('Элем слева= ' + arr[gr][y]);
                if(y > 0){
                 var vr = y - 1;
                   if(arr[x][y] > arr[x][vr]){
                    console.log('Элемент больше соседнего элемента слева');
                    console.log('Элем сверху= ' + arr[x][vr]);
                       console.log(arr);
                       console.log('col= ' + col);
                       console.log('str= ' + str);
                       if(arr.length - 1 < x){
                           //console.log('ghj[jl');
                           var gr2 = x + 1;
                           console.log('Элемент больше соседнего на строке снизу');
                            console.log('Элем снизу= ' + arr[gr2][y-1]);
                       }
                } 
        }
      }
  }
  }    
      function task10(){
       console.log("Задача 10");
       arr = [];
       var colmns = prompt('Введите кол-во столбцов в массиве');
       var strings = prompt('Введите кол-во строк в массиве');
       for( x = 0  ; x < strings ; x++){
           arr[x] = []
           for( y = 0 ; y < colmns; y++){
              arr[x][y] = (randomInteger(1 , 10)) ;
              LocalMax(colmns, strings , arr , x , y);
           }
       }
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно считать градиенты с соседними элементами, при этом следующий становится предыдущим:
function countLocalMax(arr) {
    const last = arr.length;
    let prevGrad = 1;
    return arr.reduce((p,c,i,a)=>{
      const nextGrad = i === last ? -1 : a[i+1] - c;
      if (prevGrad >= 0 && nextGrad <= 0) p++;
      prevGrad = nextGrad;
      return p;
    }, 0);
  }

countLocalMax([0,0,3,4,5,4,0,-1]); // 2

Для нулевого элемента массива считаем "предыдущий" градиент положительным, для последнего – отрицательным.
Элемент локальный максимум, если предыдущий градиент не отрицательный и следующий не положительный.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы