getduplicate neu
This commit is contained in:
parent
799667ed1c
commit
99a974cc9b
17
numbers.c
17
numbers.c
@ -71,21 +71,24 @@ unsigned int *createNumbers(unsigned int len) {
|
||||
// on errors.
|
||||
unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) {
|
||||
if (!numbers || len < 2)
|
||||
return NULL; // Fehlerhaftes Array
|
||||
return 0; // Sicherheit: kein Array oder zu kurz
|
||||
|
||||
TreeNode *root = NULL; // neuer Baum
|
||||
TreeNode *root = NULL;
|
||||
unsigned int duplicateValue = 0;
|
||||
|
||||
for (unsigned int i = 0; i < len; i++) {
|
||||
int isDuplicate = 0;
|
||||
|
||||
// Zahl in den Baum einfügen
|
||||
root = addToTree(root, &numbers[i], sizeof(unsigned int),
|
||||
compareUnsignedInt, &isDuplicate);
|
||||
if (isDuplicate) {
|
||||
duplicateValue = numbers[i];
|
||||
break;
|
||||
|
||||
// Duplikat erkannt
|
||||
if (isDuplicate && duplicateValue == 0) {
|
||||
duplicateValue = numbers[i]; // das erste Duplikat merken
|
||||
}
|
||||
}
|
||||
|
||||
clearTree(root);
|
||||
return duplicateValue;
|
||||
clearTree(root); // Baum freigeben
|
||||
return duplicateValue; // 0, falls kein Duplikat
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user