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
Comments | NOTHING