LeetCode(2023-10-09)


575. 分糖果

575. 分糖果

class Solution:
    def distributeCandies(self, candyType: List[int]) -> int:
        num = int(len(candyType) / 2)
        return len(set(candyType)) if num >= len(set(candyType)) else num

LCR 157. 套餐内商品的排列顺序

LCR 157. 套餐内商品的排列顺序

from typing import List


class Solution:
    def goodsOrder(self, goods: str) -> List[str]:
        res = self.generate_permutations(goods)

        return list(res)

    def generate_permutations(self, elements):
        if len(elements) <= 1:
            return elements

        # 用于存储所有排列的集合
        permutations = set()

        for i in range(len(elements)):
            # 选取当前元素作为排列的第一个元素
            first_element = elements[i]

            # 从剩余元素中生成子排列
            remaining_elements = elements[:i] + elements[i + 1:]
            sub_permutations = self.generate_permutations(remaining_elements)

            # 将当前元素与子排列合并得到完整的排列,并添加到结果集合中
            for sub_permutation in sub_permutations:
                permutations.add(first_element + sub_permutation)

        return permutations

1218. 最长定差子序列

1218. 最长定差子序列

from typing import List


class Solution:
    def longestSubsequence(self, arr: List[int], difference: int) -> int:
        dp = {arr[i]: 0 for i in range(len(arr))}
        max_length = 0
        for i in range(len(arr)):
            last = arr[i] - difference
            if last in dp.keys():
                dp[arr[i]] = dp[last] + 1
            else:
                dp[arr[i]] = 1
            if dp[arr[i]] > max_length:
                max_length = dp[arr[i]]
        return max_length

1480. 一维数组的动态和

1480. 一维数组的动态和

class Solution:
    def runningSum(self, nums: List[int]) -> List[int]:
        return [sum(nums[:i]) for i in range(1, len(nums) + 1)]

2672. 有相同颜色的相邻元素数目

2672. 有相同颜色的相邻元素数目

class Solution:
    def colorTheArray(self, n: int, queries: List[List[int]]) -> List[int]:
        color_arr = [0] * (n + 2)
        tmp = 0
        ans = [0] * (len(queries))
        for i in range(len(queries)):
            same_before = color_arr[queries[i][0] + 1] == color_arr[queries[i][0]] and color_arr[queries[i][0] + 1] != 0
            same_after = color_arr[queries[i][0] + 1] == color_arr[queries[i][0] + 2] and color_arr[queries[i][0] + 1] != 0
            color_arr[queries[i][0] + 1] = queries[i][1]
            if color_arr[queries[i][0] + 1] == color_arr[queries[i][0] + 2] and color_arr[queries[i][0] + 1] != 0:
                if not same_after:
                    tmp += 1
            else:
                if same_after:
                    tmp = tmp - 1 if tmp - 1 >= 0 else 0
            if color_arr[queries[i][0] + 1] == color_arr[queries[i][0]] and color_arr[queries[i][0] + 1] != 0:
                if not same_before:
                    tmp += 1
            else:
                if same_before:
                    tmp = tmp - 1 if tmp - 1 >= 0 else 0
            ans[i] = tmp
        return ans

1773. 统计匹配检索规则的物品数量

1773. 统计匹配检索规则的物品数量

class Solution:
    def countMatches(self, items: List[List[str]], ruleKey: str, ruleValue: str) -> int:
        count = 0
        key = {"type": 0, "color": 1, "name": 2}
        for item in items:
            if item[key[ruleKey]] == ruleValue:
                count += 1
        return count

声明:Hello World|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - LeetCode(2023-10-09)


我的朋友,理论是灰色的,而生活之树是常青的!