私は「コードテスト」のような数字が好きではありません.

4193 ワード

私は同じ数字が好きではありません。


問題の説明


配列arr.アレイarrの各要素は、0から9の数字で構成されています.この場合、アレイarrは連続して表示される数字を1つだけ保持し、すべて削除しようとします.ただし、削除後に残数を返す場合は、アレイarr内の要素の順序を維持する必要があります.たとえば、
  • arr=[1,1,3,0,1]は[1,3,0,1]を返します.
  • arr=[4,4,4,3]は[4,3]を返します.
  • 配列arrから連続して現れる数字を削除し、残りの数を返すsolution関数を完了してください.

    せいげんじょうけん

  • アレイarrサイズ:1000000以下の自然数
  • アレイarrの要素サイズ:0以上9以下の整数
  • I/O例



    私の答え


    28388
    function solution(arr)
    {
        //arr가 중복되는 수는 모두 제거해야한다. 먼저 배열의 길이만큼 반복시켰다. 
        for (let i = 0; i < arr.length; i++) {
            //arr을 검사하면서 이전 배열이 이후 배열과 값이 같다면 이전 배열에 정수가 아닌 음수를 넣었다.(문제에서는 정수형을 주어짐 제거하기 쉽게하기 위해)
            if(arr[i-1] === arr[i]){
                arr[i-1] =-1;
            }        
        }
        //곧바로 filter를 적용하여 0 이상인 값만 리턴하였다. 
        return arr.filter((value) => value >= 0)
    }
    

    他人を解く

    //아래와 같은 값을 구하려고 했지만 접근하기 쉽지 않았다. 배열도 콜백함수에 넣을 수 있다.
    function solution(arr)
    {
        //filter를 적용하는데 이때 콜백함수에 value와 index를 받고 val 가 arr[index+1] 과 같지 않은 값들을 출력했다.
        return arr.filter((val,index) => val != arr[index+1]);
    }