Stack ist eine grundlegende Datenstruktur in der Informatik und wird normalerweise für sein Last-In-First-Out-Attribut (LIFO) verwendet. Wenn Sie den Stapel verwenden, können Sie auf ein interessantes Problem stoßen, um zu überprüfen, ob die Elemente des Stapels paarweise kontinuierlich sind. In diesem Artikel lernen wir, wie dieses Problem mit Java gelöst werden kann, um sicherzustellen, dass die Lösung effizient und klar ist.
Problemanweisung
Geben Sie ein
<code>4, 5, 2, 3, 10, 11</code>
Ausgabe
<code>元素是否成对连续?<br>true</code>
import java.util.Stack; public class PairwiseConsecutiveChecker { public static boolean areElementsPairwiseConsecutive(Stack<Integer> stack) { // 基本情况:如果堆栈为空或只有一个元素,则返回 true if (stack.isEmpty() || stack.size() == 1) { return true; } // 使用临时堆栈在检查时保存元素 Stack<Integer> tempStack = new Stack<>(); boolean isPairwiseConsecutive = true; // 成对处理堆栈元素 while (!stack.isEmpty()) { int first = stack.pop(); tempStack.push(first); if (!stack.isEmpty()) { int second = stack.pop(); tempStack.push(second); // 检查这对元素是否连续 if (Math.abs(first - second) != 1) { isPairwiseConsecutive = false; } } } // 恢复原始堆栈 while (!tempStack.isEmpty()) { stack.push(tempStack.pop()); } return isPairwiseConsecutive; } public static void main(String[] args) { Stack<Integer> stack = new Stack<>(); stack.push(4); stack.push(5); stack.push(2); stack.push(3); stack.push(10); stack.push(11); boolean result = areElementsPairwiseConsecutive(stack); System.out.println("元素是否成对连续? " + result); } }
Stapel wiederherstellen: Da wir den Stapel beim Überprüfen des Rechten geändert haben, ist es sehr wichtig, ihn nach Abschluss des Schecks in seinen ursprünglichen Zustand wiederherzustellen. Dies stellt sicher, dass der Stapel für nachfolgende Operationen unverändert bleibt.
Randfall: Diese Funktion übernimmt Randfälle wie einen leeren Stapel oder einen Stapel mit nur einem Element, wobei die TRUE zurückgibt, da diese Fälle den Zustand unbedeutend erfüllen.
Zeitkomplexität: Die Zeitkomplexität dieser Methode ist o (n) , wobei n die Anzahl der Elemente im Stapel ist. Dies liegt daran, dass wir den Stapel nur einmal durchqueren und Elemente nach Bedarf platzen und drücken.
Raumkomplexität: Da der temporäre Stapel verwendet wird, ist die Raumkomplexität auch o (n) .
SchlussfolgerungDas obige ist der detaillierte Inhalt vonÜberprüfen Sie, ob Stackelemente in Java in Folge ein paarweise sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!