首页 > 其他分享 >Day 2:3107 使数组中位数等于k的最少操作数

Day 2:3107 使数组中位数等于k的最少操作数

时间:2024-08-13 13:27:25浏览次数:15  
标签:操作数 nums int res 3107 中位数 mid Day

3107 使数组中位数等于k的最少操作数

1. 题目描述

3107 使数组中位数等于k的最少操作数

2. 解题思路

(1) 对nums数组从小到大排序,注意到mid=nums.size()/2位置处的值为中位数;
(2) 判断中位数与k的大小关系:

  1. 若中位数大于k,则向左依次使每一个大于k的值变为k,记录所需操作数;
  2. 若中位数小于等于k,则向右依次使每一个小于k的值变为k,记录所需操作数。

3. 代码实现

class Solution {
public:
    long long minOperationsToMakeMedianK(vector<int>& nums, int k) {
        int n = nums.size();
        // 对nums进行从大到小排序
        ranges::sort(nums);
        long long res = 0;
        // 排序后, 若数组长度为偶数, mid位置为较大值
        int mid = n / 2;
        if (nums[mid] > k) {
            for (int i = mid; i >= 0 && nums[i] > k; i--) {
                res += nums[i] - k;
            }
        } else {
            for (int i = mid; i < n && nums[i] < k; i++) {
                res += k - nums[i];
            }
        }
        return res;
    }
};

标签:操作数,nums,int,res,3107,中位数,mid,Day
From: https://blog.csdn.net/qewa132/article/details/141161451

相关文章

  • Day28 贪心算法part2
    任务122.买卖股票的最佳时机II给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大利润。思路考虑分解最终......
  • 代码随想录day28 || 122 买卖最佳时机2,55 跳跃游戏,45 跳跃游戏2,1005 k次取反最大数组
    122买卖股票最佳时机2funcmaxProfit(prices[]int)int{ //思路,因为支持同一天买入卖出,所以利润最大应该是所有正利润的加总结果 varsumint fori:=1;i<len(prices);i++{ ifprices[i]-prices[i-1]>0{ sum+=prices[i]-prices[i-1] } } returns......
  • 『区间最值操作 & 区间历史最值』Day6
    1势能1.1有一类之前就见过的操作。区间取模区间开方。开方是说在\(\log\logB\)次过后就不变了,所以这之前暴力即可。取模则是说如果一个数能取模那么至少会减少一半,所以一个数最多暴力操作\(\logB\)次就没了。对于一个区间你维护最大值看是否需要递归进行操作即可。上......
  • HashSet底层add方法去重例题 day14
    测试类packagecom.shujia.day14;importjava.util.HashSet;/*使用Set集合存储自定义对象,当对象的姓名和年龄都一样的时候,将这两个对象认为是重复了,进行去重HashSet:底层数据结构是哈希表*/publicclassSetDemo2{publicstaticvoidmain(String[]ar......
  • Day 41 动态规划 Part09 开始炒股
    动态规划解题步骤确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组121.买卖股票的最佳时机这道题虽然自己做出来了,但是做了后面的题再回头看它就有了不一样的理解。curMin更重要的代表了一种状态,代表遍历到当前时间时最低的股......
  • 「Day 7—离散化 & 树状数组 & 线段树」
    离散化定义离散化本质是一种哈希,是一种用来处理数据的方法。1.创建原数组的副本。2.将副本中的值从小到大排序。3.将排序好的副本去重。4.查找原数组的每一个元素在副本中的位置,位置即为排名,将其作为离散化后的值。B3694数列离散化代码#include<iostream>#include<algo......
  • 青甘环线游记|day(9~10)|祁连山大草原、黄河
    祁连山大草原祁连山的平均山脉海拔在4000米~5000米之间,高山积雪形成的硕长而宽阔的冰川地貌奇丽壮观。海拔高度在4000米以上的地方,称为雪线,祁连山的雪线之上,常常会出现逆反的生物奇观。在浅雪的山层之中,有名为雪山草甸植物的蘑菇状蚕缀,还有珍贵的药材——高山雪莲,以及一种......
  • 8.12 Day5
    推荐歌曲《我是逆蝶》。ADivideSquare挖掘特殊点:有一个端点在边缘上。如果我们扫x坐标,维护lst横和交叉的竖,非常不好维护,并且TLE。结论:一个交点会至少增加一个区域。证明显然。当然还有一点cornercase。BCowTennisTournament一开始想的是三元环会是怎的,推出的......
  • 代码随想录Day12
    二叉树遍历分为前序、中序、后续、层序四种其中前中后序属于深度优先搜索,层序属于广度优先搜索前序遍历顺序:根节点->左子树->右子树中序遍历顺序:左子树->根节点->右子树后序遍历顺序:左子树->右子树->根节点不难发现,前中后其实就是根节点在遍历中的位置至于层序遍历,顾名......
  • LinkedHashSet day14
    /*LinkedHashSet是继承自HashSet类,底层数据结构是哈希表和双链表,哈希表保证了元素的唯一性,双链表保证了元素的有序Collection:接口-List(元素有序且可以发生重复,且有索引的概念)-ArrayList(底层数据结构是数组,查询快,增删慢,线程......