整数の2つの入力配列、プレス積層順序を表す第1の配列は、それが第二の配列ポップアップスタックの順序が可能であるか否かを判断します。スタックが等しいと仮定されている上に全ての数字は、押されていません。1,2,3,4,5の配列の配列がスタックに押し込まれるような、プッシュシーケンスがポップの配列に対応する4,5,3,2,1配列が、4,3,5,1,2シーケンスのポップアップシーケンスをプッシュすることは不可能です。(注:2つのシーケンスの長さが等しいです)
思考:操作のプッシュ固定数を、プッシュ記録の可変数と、スタックポインタとポップアップ配列の位置の上部が同じである場合いる間、プッシュ操作を行います。
コードは次のように実装されています。
1 輸入 java.utilの。* ; 2 3 パブリック クラスソリューション{ 4 パブリック ブール IsPopOrder(INT [] PUSHA、INT [] POPA){ 5 スタックS = 新しいスタック()。 6 s.push(PUSHA [0 ])。 7 int型のカウント= 0 ; 8 INT A = 1、B = 0 。 9 一方(カウント<pushA.length + 1件の&& B < popA.length){ 10 であれば(s.peek()に等しい(POPA [B])){ 11 s.pop(); 12 B ++ ; 13 } 他{ 14 であれば(< pushA.length){ 15 s.push(PUSHA [A])。 16 ++ ; 17 数++ ; 18 } 他{ 19 カウント++ 。 20 } 21 } 22 } 23 であれば(s.isEmpty()) 24 リターン 真。 25 他 26 リターン はfalse ; 27 } 28 }
(PSは:空のスタックの実行方法のPEEKが....異常リターンのヌルオブジェクトの前に考えるとき、スタック上で発行されます)