前言
这个问题似乎是之前没有接触到过的问题,题目的大概意思就是,给定一个数组,数组中可能会有重复的元素,现在我们的任务是
- 调整元素,使得区间内没有重复的元素
- 调整后的区间和最大
贪心算法
例如, 一个数组是
arr = [1,2,3,4,5,5,6]
怎样调整使得数组和最大且元素不重复呢?
贪心的思路
从贪心思路出发, 只要每个元素都是最大的, 那么整体和就是最大的,所以,我们不去调整最大值,而是保留下来数组里面的最大值
解题
- 
先将数组进行排序 1arr.sort(reverse= True)
- 
然后开始考虑挨个调整 - 
将当前元素与该元素前面一个元素进行比较 
- 
因为有重复的元素,所以要考虑最大值有重复的情况 例如 1arr = [6,6,6,5]arr[i]来说, 为了调整最大, 那么我们就需要将arr[i]和arr[i-1]-1做比较, 取这两个值之间的最小值- 如果与arr[i] = arr[i-1], 那么我们就可以把arr[i]调整为在贪心策略下的最大值
- 如果不相等,因为我们是经过排序的, 所以这个值的本身就是可以取到的最大值
 
- 如果与
 
- 
例题
给你一个整数数组
nums。每次 move 操作将会选择任意一个满足0 <= i < nums.length的下标i,并将nums[i]递增1。返回使
nums中的每个值都变成唯一的所需要的最少操作次数。
如果字符串
s中 不存在 两个不同字符 频次 相同的情况,就称s是 优质字符串 。给你一个字符串
s,返回使s成为 优质字符串 需要删除的 最小 字符数。字符串中字符的 频次 是该字符在字符串中的出现次数。例如,在字符串
"aab"中,'a'的频次是2,而'b'的频次是1。
|  |  |