• Python实现栈、队列、双端队列


    栈的实现

    class Stack():
        def __init__(self):
            self.items = []
    
        def push(self, item):
            self.items.append(item)
    
        def pop(self):
            return self.items.pop()
    
        def peek(self):
            return self.items[len(self.items)-1]
    
        def isEmpty(self):
            return len(self.items) == 0
    
        def size(self):
            return len(self.items)
    
    stack=Stack()
    stack.push(1)
    stack.push(2)
    stack.push(3)
    print(stack.peek())
    print(stack.pop())
    print(stack.pop())
    print(stack.pop())

    队列的实现

    #coding:utf8
    class Queue():
        def __init__(self):
            self.items = []
    
        def enqueue(self, item):
            self.items.insert(0, item)
    
        def dequeue(self):
            return self.items.pop()
    
        def isEmpty(self):
            return len(self.items) == 0
    
        def size(self):
            return len(self.items)
    
    # queue = Queue()
    # queue.enqueue(1)
    # queue.enqueue(2)
    # queue.enqueue(3)
    # print(queue.size())
    # print(queue.dequeue())
    # print(queue.dequeue())
    # print(queue.dequeue())

    队列算法之烫手的山芋

    kids = ["A", "B", "C", "D", "E", "F"]  # 参加游戏的孩子
    queue = Queue()
    for kid in kids:
        queue.enqueue(kid)
    while queue.size() > 1:
        for i in range(6):
            queue.enqueue(queue.dequeue())
        queue.dequeue()
    print(queue.dequeue())

    双端队列的实现

    # coding:utf8
    # 队列  :尾部--->首部
    class Deque():
        def __init__(self):
            self.items = []
    
        def addFront(self, item):
            self.items.append(item)
    
        def addRear(self, item):
            return self.items.insert(0, item)
    
        def removeFront(self):
            return self.items.pop()
    
        def removeRear(self):
            return self.items.pop(0)
    
        def isEmpty(self):
            return len(self.items) == 0
    
        def size(self):
            return len(self.items)

    双端队列算法之回文检测

    # 实现回文检查
    def isHuiWen(_str):
        flag = True
        deque = Deque()
        for i in _str:
            deque.addFront(i)
        while deque.size() > 1:
            if deque.removeFront() != deque.removeRear():
                flag = False
                break
        return flag
    
    
    print(isHuiWen("hooh"))
    print(isHuiWen("hoioh"))
    print(isHuiWen("hoijoh"))
  • 相关阅读:
    LeetCode(81): 搜索旋转排序数组 II
    2018年6月8日论文阅读
    LeetCode(80):删除排序数组中的重复项 II
    LeetCode(79): 单词搜索
    LeetCode(78):子集
    LeetCode(77):组合
    LeetCode(76): 最小覆盖子串
    LeetCode(75):分类颜色
    LeetCode(74):搜索二维矩阵
    linux 两个查找工具 locate,find
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/12815215.html
Copyright © 2020-2023  润新知