日野弥生:勉強しよう

LeetCode 1679 - K 和数对的最大数目

发表于2025年04月19日

#数组 #哈希表 #双指针 #排序

本题使用哈希表(字典)对数据进行存储,牺牲O(n)空间换取时间复杂度为O(n)的效率。

class Solution:
    def maxOperations(self, nums: List[int], k: int) -> int:
        result = 0
        # 利用Counter能直接记录列表数据和出现的次数
        numDict = dict(Counter(nums))
        for item in nums:
            value = k - item
            if value in numDict and item in numDict: 
                if numDict[item] > 0 and numDict[value] > 0:
                    # 如果 item 和 value 相同,确保有至少两个相同的元素
                    if item == value and numDict[item] > 1:
                        numDict[item] -= 2  # 减少两个相同元素的计数
                        result += 1
                    # 如果 item 和 value 不同
                    elif item != value:
                        numDict[item] -= 1  # 减少 item 的计数
                        numDict[value] -= 1  # 减少 value 的计数
                        result += 1
        return result

フラッシュタブ:LeetCode

题目链接:https://leetcode.cn/problems/max-number-of-k-sum-pairs/

上一篇

LeetCode 11 - 盛最多水的容器

下一篇

LeetCode 643 - 子数组最大平均数 I