[プログラマーレベル1]同じ数字が気に入らない



に質問


配列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例



    💡 に答える

    import java.util.*;
    
    public class Solution {
        public int[] solution(int []arr) {
            int[] answer = {};
            ArrayList<Integer> al = new ArrayList<Integer>();
            
            al.add(arr[0]);
            for(int i = 1; i < arr.length; i++) {
                if(arr[i] != arr[i - 1])
                    al.add(arr[i]);
            }
            
            answer = new int[al.size()];
            for(int i = 0; i < answer.length; i++) {
                answer[i] = al.get(i);
            }
            
            return answer;
        }
    }

    ✏️ comment

  • ArrayListを作成し、最初のarr配列の値を
  • に拡大する.
    インデックス配列の値が前のインデックスの値と等しくない場合にのみ、ArrayListのに値が挿入されます.