中位数贪心|前缀和_距离和ret=l+r_1

数据按排序后,处于中间位置的数值(数据个数奇数取正中间,偶数取中间两个的平均值)

lc462

class Solution {

public:

int minMoves2(vector<int>& nums) {

int m = nums.size() / 2;

++ranges::nth_element(nums, nums.begin() + m);++

++int mid = numsm;++

int ans = 0;

for (int x : nums) {

++ans += abs(x - mid);++

}

return ans;

}

};

lc2033

class Solution {

/*

输入:grid = \[2,4,6,8], x = 2

输出:4

*/

public:

int minOperations(vector<vector<int>>& grid, int x)

{

vector<int> a;

for(auto& g:grid)

{

for(auto& e:g)

a.push_back(e);

}

int n=a.size();

int m=n/2;

++ranges::nth_element(a,a.begin()+m);
int mid=am;
++

int ret=0;

for(auto& b:a)

{

int d=abs(b-mid);

if(d%x!=0)

return -1;

ret+=(d/x);

}

return ret;

}

};

lc2602

排序+前缀和+二分

++right = sumn - sumj - q * (n - j); // 绿色面积++

使数组元素 全部等于某个元素的最小操作数

从q*n优化为(q+n)*log n

class Solution {

public:

vector<long long> minOperations(vector<int>& nums, vector<int>& queries) {

ranges::sort(nums);

int n = nums.size();

vector<long long> sum(n + 1); // 前缀和

for (int i = 0; i < n; i++) {

sumi + 1 = sumi + numsi;

}

int m = queries.size();

vector<long long> ans(m);

for (int i = 0; i < m; i++) {

int q = queriesi;

long long j = ranges::lower_bound(nums, q) - nums.begin();

long long left = q * j - sumj; // 蓝色面积

long long ++right = sumn - sumj - q * (n - j); // 绿色面积++

ansi = left + right;

}

return ans;

}

};

lower_bound 返回有序容器中++第一个≥目标值的元素迭代器++

upper_bound 返回第一个>目标值的元素迭代器(均基于二分查找,仅匹配条件不同)

lc2615

hash分组+前缀和求距离和

++retq = left + right;++

class Solution {

typedef long long ll;

public:

vector<long long> distance(vector<int>& nums) {

int n=nums.size();

unordered_map<int,vector<int>> hash;

vector<ll> ret(n);

for(int i=0;i<n;i++)

{

hashnums\[i].push_back(i);

}

for(auto& _,b:hash)

{

int m=b.size();

if(m==1)

{

retb\[0]=0;

continue;

}

vector<ll> p(m+1);

for(int i=1;i<=m;i++)

pi=pi-1+bi-1;

for(int i=0;i<m;i++)

{

int q=bi;

ll left = (ll)q*i-pi; // blue

ll right = pm - pi - (ll)q * (m - i); //green

++retq = left + right;++

}

}

return ret;

}

};

相关推荐
find1star6 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
迅翼SwiftWing6 小时前
编队系列(总)|固定翼编队如何实现稳定飞行?通信架构、协同算法与工程约束深度解析
算法·架构
LB21126 小时前
力扣160 21 86
算法·leetcode·职场和发展
小智老师PMP7 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
HugoStudio_SWAN7 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
a187927218317 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
江畔柳前堤8 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
文心快码BaiduComate9 小时前
2026 OPC x AI Coding 趋势案例交流会圆满落幕:一个人就一支研发团队
算法
ACM-moran9 小时前
条件显化(二分单峰函数+构造数列)
算法·推公式·整数三分
闻缺陷则喜何志丹9 小时前
【栈 运算系统】P3719 [AHOI2017初中组] rexp|普及+
c++·算法··洛谷·运算系统