Страницы

Поиск по вопросам

понедельник, 29 апреля 2019 г.

Удалить дубликаты в массиве без использования коллекций. Java

Необходимо удалить дубликаты в массиве без использования коллекций.
C ArrayList или HashSet все понятно, тут делать не чего, но мне задание дали удалить дубликаты не используя ничего, кроме массивов. При чем метод должен работать, даже если дубликатов больше двух.
Исходный массив {1 ,1, 1, 2, 1, 3, 3} Искомый результат {1, 2, 3}
В общем уже голову сломал, может кто поможет?
Спасибо.


Ответ

Как я полагаю, ваше задание на использование циклов при работе с массивами. Если так, то прямолинейный подход с использованием циклов может выглядеть следующим образом
import java.util.*; import java.lang.*; import java.io.*;
class Ideone { public static void main (String[] args) throws java.lang.Exception { int[] a = { 1, 1, 1, 2, 1, 3, 3 };
int n = a.length;
for ( int i = 0, m = 0; i != n; i++, n = m ) { for ( int j = m = i + 1; j != n; j++ ) { if ( a[j] != a[i] ) { if ( m != j ) a[m] = a[j]; m++; } } }
if ( n != a.length ) { int[] b = new int[n]; for ( int i = 0; i < n; i++ ) b[i] = a[i];
a = b; }
for ( int x : a ) System.out.print( x + " " ); System.out.println(); } }
Вывод программы
1 2 3

Комментариев нет:

Отправить комментарий