栈-1441-用栈操作数组

9 篇文章 0 订阅

1.判断当前的idx数是否在target数组中,若存在则返回栈进行一次push处理,并将该数据存入数组栈
2.先判断target是否与数组栈相等,相等时即已经满足结束条件,否则则对返回栈进行一次push以及一次pop处理
在这里插入图片描述
在这里插入图片描述

class Solution(object):
    def buildArray(self, target, n):
        """
        :type target: List[int]
        :type n: int
        :rtype: List[str]
        """

        stack=[]
        data=[]
        for i in range(1,n+1):
            if i in target:
                stack.append('Push')
                data.append(i)
            else:
                if data==target:
                    return stack
                stack.append('Push')
                stack.append('Pop')
        return stack

判断数据是否位于target中用字典可以实现O(1)的时间复杂度

class Solution(object):
    def buildArray(self, target, n):
        """
        :type target: List[int]
        :type n: int
        :rtype: List[str]
        """

        stack=[]
        dic={}
        for i in target:
            dic[i]=1
        data=[]
        for i in range(1,n+1):
            if data==target:
                    return stack
            if dic.get(i,-1)!=-1:
                stack.append('Push')
                data.append(i)
            else:
                stack.append('Push')
                stack.append('Pop')
        return stack
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值