Java :: Aufgabe #339 :: Lösung #1

1 Lösung Lösung öffentlich
#339

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ß
#1
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;
	}
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1810346

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.