每日一题 2216. 美化数组的最少删除数(中等,贪心)
- 贪心,一开始可能会觉得如果删除前面一个相等的元素时,会导致后面的元素前移,造成产生更多的相等的元素对的情况
- 但是在遍历过程中至少要在相等元素对中删除一个,也可以同时删除两个使得后面的元素奇偶关系不变,但是显然如果删除一个当前元素对中的元素后,再删除下一个元素对的一个元素也可以使得后面的元素奇偶关系不变
- 总之贪心地删除遇到的每一个相等元素对中的一个就可以了
class Solution:
def minDeletion(self, nums: List[int]) -> int:
i = 0
ans = 0
while i < len(nums) - 1:
if nums[i] != nums[i + 1]:
i += 2
continue
ans += 1
i += 1
return ans if (len(nums) - ans) % 2 == 0 else ans + 1