๐ŸŒ• ๅ‰‘ๆŒ‡ Offer 31. ๆ ˆ็š„ๅŽ‹ๅ…ฅใ€ๅผนๅ‡บๅบๅˆ—

ๅžไฝ›็ซฅๅญ2022ๅนด10ๆœˆ10ๆ—ฅ
  • algorithm
  • Stack
ๅฐไบŽ 1 ๅˆ†้’Ÿ

๐ŸŒ• ๅ‰‘ๆŒ‡ Offer 31. ๆ ˆ็š„ๅŽ‹ๅ…ฅใ€ๅผนๅ‡บๅบๅˆ—

้šพๅบฆ: ๐ŸŒ•

้—ฎ้ข˜ๆ่ฟฐ

img_34.png


่งฃๆณ•

class Solution {
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        // ๆ€่ทฏ๏ผš
        // ๅ€ŸๅŠฉ ๆ ˆ๏ผŒๆจกๆ‹Ÿๆƒ…ๆ™ฏ
        // ้ข˜ๆ„ๅทฒ็ป่ฏดๆ˜Žไบ†ๆ‰€ๆœ‰ๅ…ƒ็ด ๅ‡ไธๆƒณ็ญ‰๏ผŒๅ› ๆญคๅชๆœ‰ไธ€็งๆƒ…ๅ†ต
        int len = pushed.length;
        if(len == 0) {
            return true;
        }
        LinkedList<Integer> stack = new LinkedList<>();
        int i = 0;
        int j = 0;
        while(i < len && j < len) {
            // System.out.println(pushed[i] + " : " + popped[j]);
            int exp = popped[j]; // ๅฝ“ๅ‰้œ€่ฆๅผนๅ‡บ็š„่Š‚็‚นๅ€ผ
            if(!stack.isEmpty() && stack.peek() == exp) {
                stack.pop();
                // i ++;
                j ++;
            } else if(pushed[i] == exp) {
                i ++;
                j ++;
            } else {
                // ๆŒ็ปญๅŽ‹ๆ ˆ
                stack.push(pushed[i]);
                i ++;
            }
        }
        while(!stack.isEmpty()) {
            int val = stack.pop();
            int exp = popped[j];
            // System.out.println(val + "  " + exp);
            if(val != exp) {
                return false;
            }
            j ++;
        }
        return true;
    }
}

่พ“ๅ‡บ

img_35.png

ไธŠๆฌก็ผ–่พ‘ไบŽ: 2022/10/10 ไธ‹ๅˆ8:43:48
่ดก็Œฎ่€…: liuxianzhishou