ホームページ >Java >&#&チュートリアル >Javaでスタック要素が連続しているかどうかを確認してください
スタックは、コンピューターサイエンスの基本的なデータ構造であり、通常、最新の(lifo)属性に使用されます。スタックを使用する場合、興味深い問題が発生する可能性があります。これは、スタックの要素がペアで連続しているかどうかを確認することです。この記事では、Javaを使用してこの問題を解決する方法を学び、ソリューションが効率的かつ明確であることを確認します。
整数スタックを考えると、タスクは、スタックの要素がペアで連続しているかどうかを判断することです。 2つの要素間の違いが正確に1の場合、それらは連続と見なされます。
入力
<code>4, 5, 2, 3, 10, 11</code>
output
<code>元素是否成对连续?<br>true</code>
以下は、スタック要素がペアになって連続しているかどうかを確認する手順です。
説明
<code class="language-java">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); } }</integer></integer></integer></code>スタックの復元:
右をチェックするときにスタックを変更したため、チェックが完了した後に元の状態に復元することが非常に重要です。これにより、その後の操作に対してスタックが変更されないようになります。
エッジケース:この関数は、空のスタックや1つの要素のみのスタックなどのエッジケースを処理します。
時間の複雑さ:このメソッドの時間の複雑さはo(n)であり、nはスタック内の要素の数です。これは、必要に応じて要素をポップして押すだけで、スタックを一度だけ通過するためです。
スペースの複雑さ:一時的なスタックが使用されるため、スペースの複雑さもo(n)です。 結論
以上がJavaでスタック要素が連続しているかどうかを確認してくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。