leetcode练习-1

剑指offer09.用两个栈实现队列

不难,但自己对于python面向对象的掌握还有欠缺。中间也没有考虑周全。思路虽然有了,但编写代码的时候错误还蛮多的。

另外,特别要考虑到如过队列加入,删除再进入再删除情况下的情况。


class CQueue:
    def __init__(self):
        self.stack_1 = []
        self.stack_2 = []

    def appendTail(self, value: int) -> None:
        self.stack_1.append(value)

    def deleteHead(self) -> int:
        if len(self.stack_2) == 0 and len(self.stack_1) != 0 :
            for i in range(len(self.stack_1)):
                self.stack_2.append(self.stack_1.pop())
            return self.stack_2.pop()
        elif len(self.stack_2) != 0:
            return self.stack_2.pop()

        else:
            return 0

剑指 Offer 30. 包含 min 函数的栈

解题思路:建立两个栈,一个存数据,另一个维护最小值。

要注意:
1.重复的最小值;
2.pop()等几个方法不用返回值

对我来说,建立两个栈的方法还是有点难度的。结合了答案的思路又修修补补才写出来

class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.A = []
        self.minA =[]

    def push(self, x: int) -> None:
        self.A.append(x)
        if not self.minA or self.minA[-1] >= x :
            self.minA.append(x)

    def pop(self) -> None:
        if self.A.pop() == self.minA[-1]:    
            self.minA.pop()

    def top(self) -> int:
        return self.A[-1]

    def min(self) -> int:
        if self.minA :
            return self.minA[-1]  # 返回值但不出栈

引用

图解算法数据结构 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇