uacs2024

导航

leetcode 2592. 最大化数组的伟大值

2592. 最大化数组的伟大值

法一:排序

丑陋的代码

class Solution {
public:
    int maximizeGreatness(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int size = nums.size(),res = 0;
        for(int i = 0,j = 0;i < size && j < size;++i,++j){
            while(j < size){
                if(nums[i] < nums[j]){
                    ++res;break;
                }
                ++j;
            }
        }
        return res;
    }
};

优雅的代码

class Solution {
public:
    int maximizeGreatness(vector<int> &nums) {
        sort(nums.begin(), nums.end());
        int i = 0;
        for (int &x : nums)
            if (nums[i] < x)
                ++i;
        return i;
    }
};

法二:利用两个指针之间的距离

class Solution {
public:
    int maximizeGreatness(vector<int> &nums) {
        int mx = 0;
        unordered_map<int, int> cnt;
        for (int &x : nums)
            mx = max(mx, ++cnt[x]);
        return nums.size() - mx;
    }
};

 

posted on 2024-12-20 17:06  ᶜʸᵃⁿ  阅读(10)  评论(0)    收藏  举报