zoukankan      html  css  js  c++  java
  • 剑指offer分块总结----------栈和队列

    1、用两个栈实现队列

    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
    class Solution:
        def __init__(self):
            self.stack1=[]
            self.stack2=[]
        def push(self, node):
            # write code here
            self.stack1.append(node)
        def pop(self):
            # return xx
            if self.stack2:
                return self.stack2.pop()
            else:
                while self.stack1:
                    self.stack2.append(self.stack1.pop())
                return self.stack2.pop()

    2、滑动窗口的最大值

    题目描述

    给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:
    {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。
    class Solution:
        def maxInWindows(self, num, size):
            # write code here
            if size<=0:
                return []
            k=[]
            for i in range(len(num)):
                if i+size<=len(num):
                    l=[]
                    for j in range(i,i+size):
                        l.append(num[j])
                    l.sort()
                    k.append(l[-1])
            return k
  • 相关阅读:
    直接插入排序
    直接选择排序
    冒泡排序
    归并排序
    进程调度
    进程与线程
    c语言struct和c++struct的区别
    二叉搜索树、AVL平衡二叉搜索树、红黑树、多路查找树

    6-11 先序输出叶结点
  • 原文地址:https://www.cnblogs.com/pythonbigdata/p/12750304.html
Copyright © 2011-2022 走看看