最近刚好做到了 leetcode 844 这道题,说的是两个字符串,里面如果出现# 则代表用户回退上个输入字符,最后判断下两个输出字符是否相同。 我想到的最直接的解法是 On 时间 On 空间, 对每个 char 进行判断,然后遇到#就把最后一个删掉,最后比较。 看了下 solution 里的最优解是 O1 space 的,利用了 yield 这个关键词,在遍历字符串的时候每次只返回一个 char,然后进行判断,判断完就把这个 char 删掉。的确很巧妙,但是我提交了下发现使用空间和我的 On 没什么区别。
我很好奇为什么会有这个现象,在 python3 里,yield 的优势已经不存在了吗?还是 leetcode 的空间计算有什么特性? 在写 leetcode 题时,该怎么正确降低 space 使用呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.