数据结构和算法分析数据结构与算法

Leetcode-面试题 03.01 三合一

2021-10-14  本文已影响0人  itbird01

面试题 03.01. 三合一

解题思路

1.最初并未理解stackNum的含义,仔细分析题意和提交一次之后,发现stackNum代表的是第几个栈的意思,题意中三个栈的描述,也就是说每次push,是往指定的栈push元素的意思,所以根据题意分析,

解题遇到的问题

题意理解

后续需要总结学习的知识点

##解法
class TripleInOne {
    private int[] vendor = null;
    private int[] currentIndex = null;
    private int stackSize = 0;

    public TripleInOne(int stackSize) {
        this.stackSize = stackSize;
        vendor = new int[stackSize * 3];
        currentIndex = new int[]{-1, stackSize - 1, 2 * stackSize - 1};
    }

    public void push(int stackNum, int value) {
        if (currentIndex[stackNum] >= (stackNum + 1) * stackSize - 1) {
            return;
        }
        vendor[++currentIndex[stackNum]] = value;
    }

    public int pop(int stackNum) {
        if (currentIndex[stackNum] < stackNum * stackSize) {
            return -1;
        }
        return vendor[currentIndex[stackNum]--];
    }

    public int peek(int stackNum) {
        if (currentIndex[stackNum] >= stackNum * stackSize) {
            return vendor[currentIndex[stackNum]];
        }
        return -1;
    }

    public boolean isEmpty(int stackNum) {
        return currentIndex[stackNum] < stackNum * stackSize ? true : false;
    }
}
上一篇下一篇

猜你喜欢

热点阅读