@trytrytry

Как динамически менять размер массива?

дан массив размерности n.Построить массив без повторов содержащий элементы заданного массива.

Как объявлять результирующий массив?
public static void main(String ... args){
        int a[] ={0,1,1,2,3,3,0,4,5,6};
        //
        int b[]=new int[a.length];
        b[0]=a[0];
        int indexb=1;
        boolean flag;
        for(int i=1;i<a.length;i++){
            flag=false;
            for(int j=0;j<b.length;j++){
                if(b[j]==a[i]){
                    flag=true;
                }

            }
            if(!flag){b[indexb]=a[i];
               indexb++;
            }
        }

        for (int k = 0; k < b.length; k++) {
            System.out.print(b[k] + " ");
        }

Ничего лучше я не придумал
  • Вопрос задан
  • 2428 просмотров
Пригласить эксперта
Ответы на вопрос 3
java.util.Set - множество (каждый элемент встречается не более одного раза)
забейте все элементы массива в множество, повторяющиеся элементы откинуться сами по себе.
Ответ написан
@jkotkot
режим сарказма
Почти правильное решение, только во внутреннем цикле:
1.Не нужно проходить все элементы Б, так как часть из них будут пустые. (Должно быть не j
Ответ написан
Комментировать
hrls
@hrls
Ну можно же и немного потроллить на лабах, почему нет?
Например следующее решение принести со словами "Я художник, я так вижу".
Хотя рекурсию, наверное, позже проходят.

import java.util.Arrays;

public class Main {
    static int[] uniques(final int[] arr) {
        return filter(arr, new int[0]);
    }

    static int[] filter(final int[] arr, final int... uniques) {
        if (arr.length == 0) {
            return uniques;
        }

        final int newElement = arr[0];
        boolean isDuplicated = false;
        for (int uniqElement : uniques) {
            if (newElement == uniqElement) {
                isDuplicated = true;
                break;
            }
        }

        if (isDuplicated) {
            return filter(Arrays.copyOfRange(arr, 1, arr.length), uniques);
        } else {
            final int[] newUniques = Arrays.copyOf(uniques, uniques.length + 1);
            newUniques[uniques.length] = newElement;
            return filter(Arrays.copyOfRange(arr, 1, arr.length), newUniques);
        }
    }


    public static void main(String[] args) {
        int a[] = {0, 1, 1, 2, 3, 3, 0, 4, 5, 6};
        for (int i : uniques(a)) {
            System.out.println(i);
        }
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы