前言
继续leetcode刷题生涯
这里记录的都是笔者觉得有点意思的做法
参考了好几位大佬的题解,感谢各位大佬
1081. 不同字符的最小子序列
class Solution:
def smallestSubsequence(self, s: str) -> str:
for a in sorted(set(s)):
tmp = s[s.index(a):]
# 看余下的是否能组成所需的字母
if len(set(tmp)) == len(set(s)):
return a + self.smallestSubsequence(tmp.replace(a, ""))
return ""
1089. 复写零
class Solution:
def duplicateZeros(self, arr: List[int]) -> None:
"""
Do not return anything, modify arr in-place instead.
"""
i, j = 0, len(arr)
while i<j:
if arr[i] == 0:
arr.insert(i,0)
arr.pop()
i+=2
else:
i+=1
1090. 受标签影响的最大值
class Solution:
def largestValsFromLabels(self, values: List[int], labels: List[int], num_wanted: int, use_limit: int) -> int:
n = len(values)
result_list = []
for i in range(n):
result_list.append((values[i], labels[i]))
result_list.sort(reverse=True)
count_limit = {
}
result, count = 0, 0
for i in range(n):
if result_list[i][1] not in count_limit:
result += result_list[i][0]
count += 1
count_limit[result_list[i][1]] = 1
elif count_limit[result_list[i][1]] < use_limit:
result += result_list[i][0]
count += 1
count_limit[result_list[i][1]] += 1
if count == num_wanted:
break
return result