零基础学算法(用英雄联盟/王者荣耀讲解)(第一弹)

700 阅读2分钟

前言

本人忠实 LOL 粉丝,我尽力用峡谷语言表达知识,帮助自己和零基础小白理解,相信即使是王者荣耀玩家也能看懂大概。

如果你什么都不懂,看着我这个应该可以提高提高智商吧。

本文将用 JavaScript 和 Python 语言记录在 LeetCode刷的算法题,你可以看着我的路线一起开启这局游戏。

我这波对线的细节和建议:

  • 知识体系化学习,不容易遗忘

装备不要乱买,鞋子,神话装备,核心装备,防御装备等,凑齐六神装。

  • 打不过赶快按b回城,跟着腿子走

面对一道新的题目毫无头绪的话,直接放弃去看题解,然后记录下来,反复复习,直到这个解法成为自己的知识为止。这是效率最高的学习办法。

  • 接受自己是新手

就当自己是青铜仔就行,段位慢慢加,总有一天上王者

此篇为:

  • 栈与队列与链表篇

题目目录

  • 20.有效的括号
  • 946.验证栈序列
  • 921.使括号有效的最少添加
  • 901.股票价格跨度
  • 739.每日温度
  • 907.子数组的最小值之和
  • 1190.反转每对括号间的子串
  • 1249.移除无效的括号

集合!准备团战!

20.有效的括号

20.有效的括号

我的题解:

class Solution:
    def isValid(self, s: str) -> bool:
        if len(s)%2 == 1 :
            return False
        
        pairs = {
        "}":"{",
        ")":"(",
        "]":"[",
        }
        stack = list()

        for ch in s:
            if ch in pairs: # 如果是右括号
                if not stack or stack[-1]!=pairs[ch]:
                    return False
                stack.pop()
            else : #如果是左括号
                stack.append()

       
        return not stack


小结:

  • 用len判断是否是空栈:len(stack) == 0

  • 查看栈顶: stack[-1]

LOL语言:

栈的特点是,先进后出。此时我们假设有三对情侣,拉克丝和ez ,霞和洛,塞纳和卢仙。分别等于我们的括号,{},[],(),

他们走进了小龙坑,此时小龙坑符合栈的特点,一个人最先进去了,最后才能出来。

现在,我们创建一个智能小龙坑 pairs ,他知道谁和谁是情侣。给出ez能得出是拉克丝结论。

现在有一队组合,他们是 ez 霞 卢仙 拉克丝 洛 塞纳 {[()]}

我们要判断他们组合关系对不对

扫视他们每个人,如果是男的(右括号),就让他看看最后进小龙坑的是不是他老婆,(他只能看到最后进小龙坑的是谁) 如果是女的,就让他直接进小龙坑。

不是他老婆,直接false,是他老婆,就让他老婆出小龙坑,一起出去补个兵。

最后小龙坑没人,代表人人有老婆,人人没问题。 小龙坑有人,代表有问题!