• [leetcode] 1675. 数组的最小偏移量 | 思维贪心 | 大疆笔试题


    题目链接
    来源:力扣(LeetCode
    链接:https://leetcode.cn/problems/minimize-deviation-in-array
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    在这里插入图片描述
    示例 1:

    输入:nums = [1,2,3,4]
    输出:1
    解释:你可以将数组转换为 [1,2,3,2],然后转换成 [2,2,3,2],偏移量是 3 - 2 = 1
    示例 2:

    输入:nums = [4,1,5,20,3]
    输出:3
    解释:两次操作后,你可以将数组转换为 [4,2,5,5,3],偏移量是 5 - 2 = 3
    示例 3:

    输入:nums = [2,10,8]
    输出:3

    提示:
    n == nums.length
    2 <= n <= 5 * 104
    1 <= nums[i] <= 109

    思路:可以将偶数 / 2,奇数 * 2。但是这样会导致还会出现奇数和偶数同时出现在数列中,所以我们可以将所有的奇数 * 2变成偶数,偶数不变(同时统计最小值),这样一来数列中所有数都是偶数,而由*2得来的偶数可以通过/2得到

    当数列中的最大值一直是偶数的时候,为了能够缩小答案,我们贪心的将这个数 / 2之后(可能为奇数可能为偶数)放到数列中,并且刚更新最小值,并统计答案(这就得到了当前这个数的贡献),答案是当前数列的最大的元素减去当前更新后的最小值,当最大的元素为奇数的时候,无法改变(奇数 * 2反而会扩大答案);在这个时候,我们就要开始考虑将最小值变大来缩小和最大值的差距,最小值能够扩大则必定为奇数(只有奇数才能够 * 2),可是在我们处理之后,将所有的值变成了偶数,那么这个奇数一定是由前面的偶数 / 2得来的,那么说这个数的贡献是已经算过了的,所以说可以直接将结果返回啦

    ac_code:

    class Solution {
    public:
        int minimumDeviation(vector<int>& nums) {
            priority_queue<int> q;
            int mini = 0x3f3f3f3f;
            for(int &t:nums) {
                if(t & 1) t <<= 1;
                q.push(t);
                mini = min(mini, t);
            }
            int ans = 0x3f3f3f3f;// q.top() - mini;
            while(q.size() && q.top() % 2 == 0) {
                int tp = q.top();
                
                tp >>= 1;
                q.pop(),q.push(tp);
                mini = min(mini, tp);
                ans = min(ans, q.top() - mini);
            }
            return ans;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 相关阅读:
    java档案类
    Java版人脸跟踪三部曲之一:极速体验
    表驱动法在STM32中的应用
    【深基16.例1】淘汰赛(上)
    生成删除数据库所有表的外检脚本
    MySQL3:MySQL中一条更新SQL是如何执行的?
    【ESD专题】从原理上分析TVS管PCB Layout的经验法则
    人间道-您到底做错了什么:正心径之您要逐渐去除外邪行为
    91.移动零(力扣)
    python快速保存微信公众号文章中的图片(可指定多个文章)
  • 原文地址:https://blog.csdn.net/weixin_45712255/article/details/126313151