[アルゴリズム]2 Dナビゲーション-出力の大きい数



大きな数値を出力


N(1<=N<=100)個の整数を入力し、その前の桁数よりも大きい出力のみを出力するプログラムを作成してください.(最初の数字は無条件出力)
■説明の入力
最初の行は自然数Nを与え、次の行はN個の整数を入力する.
■出力説明
出力される行数は自分の行数より大きい.
■入力例1
6
7 3 9 5 6 12
■出力例1
7 9 6 12
要素を順に参照し、条件に合致する要素を正解配列に挿入します.

説明する

function solution(arr) {
        let answer = [];
        answer.push(arr[0]);
        for (let i = 1; i < arr.length; i++) {
          arr[i] < arr[i + 1] ? answer.push(arr[i + 1]) : null;
        }
        return answer;
}

講師の説明

function solution(arr){         
        let answer=[];
        answer.push(arr[0]);
        for(let i=1; i<arr.length; i++){
          if(arr[i]>arr[i-1]) answer.push(arr[i]);
        }
        return answer;
}

別の解釈

function solution(arr){
    let answer = [];
    arr = [0, ...arr];
 
    for (let i=1; i < arr.length; i++){
        if (arr[i] > arr[i-1]){
            answer.push(arr[i])
        }
    }
    return answer.join(' ');
}
pushではなく、スプレッドシート構文を使用しています.
function solution(arr) {
  let answer = [];
  arr.reduce((acc, cur) => {
    if (cur > acc) {
      answer.push(cur);
    }
    return cur;
  }, 0);
 
  return answer.join(' ');
}
reduce法を用いた.私の目標はfor문を使わないことですが、この方法は思いつきません.実はとても简単です...reduceを関数の因子acc,curに変換し、accを前の段階のcurに変換し、前の段階のindexと比較する.このとき、初期値は0です.