1512:2つのスタックでキューを実装

1773 ワード

タイトル1512:2つのスタックでキューを実現
時間制限:1秒
メモリ制限:128メガ
特殊問題:いいえ
コミット:701
解決:258
タイトルの説明:
2つのスタックで1つのキューを実現し、キューのPushとPop操作を完了します.キュー内の要素はintタイプです.
入力:
各入力ファイルには、テストサンプルが含まれています.各テストサンプルについて、最初の行には、キュー操作の個数を表すn(1<=n<=10000000)が入力される.次のn行、各行にキュー操作を入力:1.PUSH Xはキュー内のpushの整数x(x>=0)2.POPがキューからpopする数.
出力:
各テストケースに対応して、すべてのpop操作のキューpopからの数値を印刷します.pop操作を実行するときにキューが空の場合は、-1を印刷します.
サンプル入力:
3
PUSH 10
POP
POP

サンプル出力:
10
-1
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Stack;


public class S7 {

	static Stack<Integer> s1 = new Stack<Integer>();
	static Stack<Integer> s2 = new Stack<Integer>();
	
	public static void main(String[] args) throws FileNotFoundException {
		BufferedInputStream in = new BufferedInputStream(new FileInputStream("S7.in"));
		System.setIn(in);
		Scanner cin = new Scanner(System.in);
		
		while (cin.hasNextLine()) {
			int lines = Integer.parseInt(cin.nextLine());
			for(int i=0; i<lines; i++){
				String s = cin.nextLine();
				process(s);
			}
		}
	}
	
	public static void process(String s){
		if(s.startsWith("PUSH")){
			String[] ss = s.split(" ");
			int val = Integer.parseInt(ss[1]);
			s1.push(val);		//  
		}else if(s.startsWith("POP")){
			if(s2.isEmpty()){	//  s2 , s1 2 
				while(!s1.isEmpty()){
					s2.push(s1.pop());
				}
			}
			
			if(s2.isEmpty()){
				System.out.println("-1");
			}else{
				System.out.println(s2.pop());
			}
		}
	}
}

意外にも現れた
全部で5つのケースがあり、5つ通過したが、総時間はタイムアウトした.
このようなヒントは、またJavaのせいだろう.ともかくとして.