牛客網|集合桟

1413 ワード

タイトルの説明
複数のスタックからなるデータ構造SetOfStacksを実装してください.各スタックのサイズはsizeで、現在のスタックが満たされている場合、新しいスタックが作成されます.このデータ構造は、通常のスタックと同じpushおよびpop動作をサポートする必要があります.
操作シーケンスint[][2]ope(C++はvector)が与えられ、各操作の最初の数は操作タイプを表し、1であればpush操作、後の数はpushに対応する数字である.2であればpop操作であり,後の数は意味がない.すべての操作を完了したSetOfStacksの順序は下から上で、デフォルトの初期のSetOfStacksは空です.データの合法性を保証する.
import java.util.*;

public class SetOfStacks {
    public ArrayList<ArrayList<Integer>> setOfStacks(int[][] ope, int size) {
        // write code here
        ArrayList<ArrayList<Integer>> stacklist = new ArrayList<>();
        int length = ope.length;
        ArrayList<Integer> cur = new ArrayList<>();
        stacklist.add(cur);
        for (int i = 0; i < length; i++) {
            if(ope[i][0]==1)//  
            {
                if(cur.size()==size)
                {
                    cur = new ArrayList<>();
                    stacklist.add(cur);
                }
                cur.add(ope[i][1]);
            }
            else if(ope[i][0]==2)//  
            {
                if(cur.size()==0)
                {
                    stacklist.remove(stacklist.size()-1);
                    cur = stacklist.get(stacklist.size()-1);
                }
                cur.remove(cur.size()-1);
            }
        }
        return stacklist;
    }
}