leetcode刷题记录1081-1090 python版

前言

继续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

猜你喜欢

转载自blog.csdn.net/weixin_44604541/article/details/108993668