Java :: Aufgabe #339

1 Lösung Lösung öffentlich

Duplikate bis auf Dopplungen aus Liste entfernen

Anfänger - Java von JKooP - 21.02.2021 um 11:24 Uhr
Gegeben ist eine sortierte Liste, welche alle gängigen Datentypen aufnehmen kann.
Dabei sind alle Werte des gleichen Typs. Statt der Liste können auch Arrays genutzt werden.

Beispiele:
List<int> {1, 1, 1, 2, 2, 3}
List<char> {‘a’, ‘a’, ‘b’, ‘c’, ‘c’, ‘c’}

Aus dieser Liste sollen jetzt alle Duplikate entfernt werden, wobei hier jeder Wert 2-mal vorkommen darf.

Lösung:
List<int> {1, 1, 2, 2, 3}
List<char> {‘a’, ‘a’, ‘b’, ‘c’, ‘c’}

Schreibe eine Methode/Funktion, die eine Liste/Array aufnimmt, die Duplikate entfernt
und diese dann wieder als Rückgabewert oder Referenz zurückgibt.

Viel Spaß

Lösungen:

vote_ok
von n1again (560 Punkte) - 12.04.2021 um 08:34 Uhr
Quellcode ausblenden Java-Code
/*ES SEI UNTERSTELLT, DASS DIE LISTE SORTIERT IST
FALLS NICHT, MÜSSTE MAN DIE LISTE ZUERST SORTIEREN */

import java.util.Arrays;

public class DuplikateEntfernen {

	public static void main(String[] args) {
		
		int[] list = {1, 1, 1, 1, 2, 2, 3};
		System.out.println("List: "+Arrays.toString(list));
		System.out.println("Lösung: "+Arrays.toString(deleteDuplicate(list)));
	}
	
	public static int[] deleteDuplicate(int[] list) {
		
		//neue Liste 'nullList' erstellen
		int[] nullList = list;

		//Alle dritten Stellen durch '0' ersetzen;
		for(int i = 0; i < list.length - 2; i++) {
			if(list[i] == list[i+2]) {
				nullList[i+2] = 0;
			}
		}
		
		//neue Liste 'filteredList' ohne '0' erstellen	
		
		//Länge des vom Array 'filteredList' herausfinden
		int length = 0;
		for(int i = 0; i < nullList.length; i++) {
			if(nullList[i] != 0) {
				length++;
			}
		}
		
		//neuen Array 'filteredList' erzeugen
		int[] filteredList = new int[length];
		
		//'filteredList' mit Werten != 0 befüllen		
		int counter = 0;
		for(int i = 0; i < nullList.length; i++) {
			if(nullList[i] != 0) {
				filteredList[counter++] = nullList[i];
			}
		}
		return filteredList;
	}
}