Hier ist das Problem: Geben Sie ein Array von Ganzzahlen, finden Sie, wenn das Array Dubletten enthält. Ihre Funktion sollte true zurückgeben, wenn mindestens ein Wert zweimal im Array erscheint, und sie sollte false zurückgeben, wenn jedes Element verschieden ist.Enthält Duplicate warum dieser Code Stack-Over-Flow?
Hier ist mein Code, aber es ist ein Fehler, Stack-Überlauf:
public static class Solution {
public boolean containsDuplicate(int[] nums) {
if (nums.length < 1)
return false;
return recursion(nums, 0, nums.length - 1);
}
private static boolean recursion(int[] nums, int start, int end) {
if ((end - start) == 0) {
return true;
}
if ((end - start) == 1) {
if (nums[start] == nums[end]) {
return false;
} else {
return true;
}
}
boolean first = recursion(nums, start, (end - start)/2 - 1);
boolean second = recursion(nums, (end - start)/2, end);
if (first == false || second == false) {
return false;
}
return true;
}
}
Debugger ist dein Freund. –
Willkommen bei Stack Overflow. Wenn Sie nicht herausfinden können, was bei der Inspektion passiert, sollten Sie im nächsten Schritt entweder einen Debugger verwenden oder die Protokollierung hinzufügen (oder beides). Ich würde damit anfangen, indem ich 'recursion' Log den Anfang und das Ende jedes Mal, wenn es aufgerufen wird ... das sollte Ihnen helfen, herauszufinden, was schief geht –
das ist eine Menge Arbeit für etwas Einfaches. Warum nicht einfach "einzigartig" das Array, und sehen, ob sich seine Länge ändert? Das sind alles über 2 Zeilen Code. –