leetcode1080

Posted asenyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode1080相关的知识,希望对你有一定的参考价值。

找到一个跟我的思路比较接近的参考解决方案:

 1 class Solution:
 2     def smallestSubsequence(self, text: str) -> str:
 3         n = len(text)
 4         d = collections.defaultdict(collections.deque)
 5         # record index
 6         for i,v in enumerate(text):
 7             d[ord(v)-ord(a)].append(i)
 8         
 9         # search orderly
10         keys = sorted(d.keys())
11         res = []
12         c = len(d)
13         last_index = -1
14         while len(res) < c: # len(res) will not larger than 26
15             # O(26*26) time, search the first smallest letter
16             for i in range(len(keys)):
17                 if all(d[keys[i]][0] < d[keys[j]][-1] for j in range(i+1, len(keys))):
18                     res.append(chr(ord(a)+keys[i]))
19                     last_index = d[keys[i]][0]
20                     keys.remove(keys[i])
21                     break
22             # O(n) time, delete all index less than last_index
23             for i in range(len(keys)):
24                 while d[keys[i]] and d[keys[i]][0] < last_index:
25                     d[keys[i]].popleft()
26   
27         return ‘‘.join(res)

参考:https://leetcode.com/problems/smallest-subsequence-of-distinct-characters/discuss/308222/show-my-thinking-process

以上是关于leetcode1080的主要内容,如果未能解决你的问题,请参考以下文章

leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段

Leetcode.1024 视频拼接

LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段

LEETCODE 003 找出一个字符串中最长的无重复片段

Leetcode 763 划分字母区间

如何在片段着色器中将分辨率从静态更改为动态