题目:
给你一个下标从 0 开始的整数数组 nums 。你需要将 nums 重新排列成一个新的数组 perm 。
定义 nums 的 伟大值 为满足 0 <= i < nums.length 且 perm[i] > nums[i] 的下标数目。
请你返回重新排列 nums 后的 最大 伟大值。
算法:
方法二:贪心+排序
示例二给了很多提示
func maximizeGreatness(nums []int) int {
// 对于nums[]中的每一个元素,选择大于nums[i]的最小的数放到perm[i]
// 如果没有,则该位置选择不伟大,放一个最小的数
n := len(nums)
sort.Ints(nums)
count := 0
for left, right := 0, 0; right < n; right ++{
if nums[left] < nums[right] {
count ++
left ++
}
}
return count
}