news 2026/5/21 22:20:10

算法实例分析:使数组相等的最小开销

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法实例分析:使数组相等的最小开销

使数组相等的最小开销

通过题意分析可知要让所有值相等,必然不需要超出数据的最大最小值,因此左右边界可以预先缩小范围。然后根据我们上面的分析不断缩小搜索边界范围。

关于函数的计算,只要统计所有数据与的差值再乘上权重即可。

最后注意,为了保证答案的正确性需要再在两端取一次最值

class Solution { public: long long minCost(vector<int>& nums, vector<int>& cost) { auto sum = [&](int k) -> long long { long long ans = 0; for (int i = 0; i < nums.size(); i += 1) { ans += 1LL * cost[i] * abs(nums[i] - k); } return ans; }; int left = *min_element(nums.begin(), nums.end()); int right = *max_element(nums.begin(), nums.end()); while (left <= right) { int lmid = left + (right - left) / 3; int rmid = right - (right - left) / 3; /// 凹区间 if (sum(lmid) <= sum(rmid)) { right = rmid - 1; } else { left = lmid + 1; } } // 最终取两点间的最值 return min(sum(left), sum(right)); } };

总结

再回头看一下二分与三分的书写形式会发现两者是如此的相像。因此我们要着重注意两者的区别:

本文只是列举了两个典型的简单例子,各种应用场景对算法的具体细节有所差异。

但是万变不离其宗,只要理清搜索的实际的搜索流程就不需要僵硬地套用所谓的模板。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 22:13:15

Access to system table ‘mysql.innodb_index_stats‘ is rejected.

好的&#xff0c;这个问题非常典型&#xff0c;结合您之前遇到的 ERROR 1049 (Unknown database) 以及当前新的报错 ERROR 3554&#xff0c;说明您正在尝试将一个包含MySQL系统表的完整备份&#xff08;很可能是从MySQL 5.7或更早版本导出的&#xff09;导入到MySQL 8.4版本中。…

作者头像 李华
网站建设 2026/5/21 22:04:52

长期项目使用Taotoken聚合API的稳定性与容灾感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期项目使用Taotoken聚合API的稳定性与容灾感受 1. 项目背景与接入初衷 我们团队负责一个面向内部用户的中型知识问答系统&#…

作者头像 李华
网站建设 2026/5/21 22:00:13

OpenAvatarChat终极部署指南:如何构建企业级数字人对话系统

OpenAvatarChat终极部署指南&#xff1a;如何构建企业级数字人对话系统 【免费下载链接】OpenAvatarChat 项目地址: https://gitcode.com/gh_mirrors/op/OpenAvatarChat OpenAvatarChat是一款革命性的模块化交互数字人对话框架&#xff0c;为开发者提供了从本地推理到云…

作者头像 李华