博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】946. Validate Stack Sequences
阅读量:6581 次
发布时间:2019-06-24

本文共 1769 字,大约阅读时间需要 5 分钟。

题目如下:

Given two sequences pushed and popped with distinct values, return true if and only if this could have been the result of a sequence of push and pop operations on an initially empty stack.

 

Example 1:

Input: pushed = [1,2,3,4,5], popped = [4,5,3,2,1]Output: trueExplanation: We might do the following sequence:push(1), push(2), push(3), push(4), pop() -> 4,push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1

Example 2:

Input: pushed = [1,2,3,4,5], popped = [4,3,5,1,2]Output: falseExplanation: 1 cannot be popped before 2.

 

Note:

  1. 0 <= pushed.length == popped.length <= 1000
  2. 0 <= pushed[i], popped[i] < 1000
  3. pushed is a permutation of popped.
  4. pushed and popped have distinct values.

解题思路:栈具有后进先出的特性,从这个特性中可以得出这么一个规律:对于出栈序列中的任意一个元素来说,在这个元素之前入栈的其他元素并且在这个元素之后出栈的这些元素必定满足后进先出。以 pushed = [8,2,1,4,7,9,0,3,5,6],popped = [1,2,7,3,6,4,0,9,5,8] 为例,对于元素3来说,在其之前入栈的元素为[8,2,1,4,7,9,0],在其后出栈的元素为[6,4,0,9,5,8] ,同时满足先于3入栈后于3出栈的元素为[8,4,9,0],这些元素出栈的顺序必定要满足[0,9,4,8]的顺序。所以只要遍历[8,4,9,0]序列,判断这些元素的在popped数组中的索引是否是递减即可。

代码如下:

class Solution(object):    def validateStackSequences(self, pushed, popped):        """        :type pushed: List[int]        :type popped: List[int]        :rtype: bool        """        dic_push = {}        dic_pop = {}        for i,v in enumerate(pushed):            dic_push[v] = i        for i, v in enumerate(popped):            dic_pop[v] = i        for i,v in enumerate(popped):            push_inx = dic_push[v]            lastInx = len(popped)            for j in range(push_inx):                if dic_pop[pushed[j]] < i:                    continue                elif dic_pop[pushed[j]] > lastInx :                    return False                lastInx = dic_pop[pushed[j]]        return True

 

转载于:https://www.cnblogs.com/seyjs/p/10017935.html

你可能感兴趣的文章
2012CSDN年度博客之星评选http://vote.blog.csdn.net/item/blogstar/xyz_lmn
查看>>
BZOJ 4037 [HAOI2015]数字串拆分 ——动态规划
查看>>
SpringBoot实战总汇--详解
查看>>
2018年7月1日笔记
查看>>
尝试使用iReport4.7(基于Ubuntu Desktop 12.04 LTS)
查看>>
动态规划:金矿模型
查看>>
子元素应该margin-top为何会影响父元素【转】
查看>>
AJAX 状态值(readyState)与状态码(status)详解
查看>>
BZOJ3668:[NOI2014]起床困难综合症(贪心)
查看>>
LightOJ 1245(Harmonic Number (II))
查看>>
小知识记录
查看>>
109. Convert Sorted List to Binary Search Tree
查看>>
css3 animate 和关键帧 @-webkit-keyframes
查看>>
文字链接颜色设置
查看>>
图片转流
查看>>
ubunto应用软件
查看>>
HTML 标签说明
查看>>
锋利的jQuery-2--判断jQuery获取到的对象是否存在$().length
查看>>
linux 查询系统版本命令、查询端口号是否被占用命令
查看>>
java笔记八:IO流之字符流与字符缓冲流
查看>>