[Leetcode解題] 3397. Maximum Number of Distinct Elements After Operations
18 October 2025
medium
greedy
題目
3397. Maximum Number of Distinct Elements After Operations
給一個整數陣列nums,還有一個k,每次可以至多對每個元素做1個操作,每次操作可以+[-k, k],求最多可以有多少個distinct的數字。
解題思路(Greedy 貪心)
這題我們可以使用greedy,我們先對數列做sort,之後列出每個數字調整後可能的數字區間,之後我們就慢慢從低挑到高,這樣必定能使得後面的區間有更多選擇,所以會是最優
Python實作
class Solution:
def maxDistinctElements(self, nums: List[int], k: int) -> int:
nums.sort()
current = -float('inf')
count = 0
for num in nums:
L, R = num - k, num + k
if current < L:
current = L
if current <= R:
count += 1
current += 1
return count
時間與空間複雜度
做一次sort,所以是 $O(nlogn)$