アルゴリズム – 同じ数字を除外する!

問題説明

配列arrがパラメータとして与えられます。配列arrの各要素は0から9までの数字で構成されています。その時、配列arrで連続で同じ数字がある場合、一つだけ残して全てを除外しようと思っています。

ただ、除外後に残った数字の配列を返す時には各要素の順番を維持しなければなりません。

例えば
  • arr = [1, 1, 3, 3, 0 ,1, 1]の場合は[1, 3, 0, 1]を返します。
  • arr = [4, 4, 4, 3, 3]の場合は[4, 3]を返します。

条件

  • 配列arrの大きさ:1000000以下の自然数
  • 配列arrの要素の大きさ:0以上、9以下の整数

入出力の例

arranswer
[1,1,3,3,0,1,1][1,3,0,1]
[4,4,4,3,3][4,3]

解説

import java.util.*;

public class Solution {
    public int[] solution(int[] arr) {
        List<Integer> list = new ArrayList<>();

        int preNum = 10;
        for(int num : arr) {
            if(preNum != num)  list.add(num);

            preNum = num;
        }       

        int[] answer = new int[list.size()];
        for(int i=0; i<answer.length; i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}
  • List<Integer> list = new ArrayList<>():重複の除外した数字を保存するための、tempListです。
  • int preNum = 10:条件が0以上9以下の数字なので、初期値として10をセットします。(条件以外の数字であればなんでもいいです。)
  • ループを回しながら重複チェックを行います。
  • int[] answer = new int[list.size()]〜:return型がint[]なので、Listから配列に変換を行います。

コメントを残す