当前位置: 首页 > backend >正文

leetcode 2918. 数组的最小相等和 中等

给你两个由正整数和 0 组成的数组 nums1 和 nums2 。

你必须将两个数组中的 所有 0 替换为 严格 正整数,并且满足两个数组中所有元素的和 相等 。

返回 最小 相等和 ,如果无法使两数组相等,则返回 -1 

示例 1:

输入:nums1 = [3,2,0,1,0], nums2 = [6,5,0]
输出:12
解释:可以按下述方式替换数组中的 0 :
- 用 2 和 4 替换 nums1 中的两个 0 。得到 nums1 = [3,2,2,1,4] 。
- 用 1 替换 nums2 中的一个 0 。得到 nums2 = [6,5,1] 。
两个数组的元素和相等,都等于 12 。可以证明这是可以获得的最小相等和。

示例 2:

输入:nums1 = [2,0,2,0], nums2 = [1,4]
输出:-1
解释:无法使两个数组的和相等。

提示:

  • 1 <= nums1.length, nums2.length <= 10^5
  • 0 <= nums1[i], nums2[i] <= 10^6

分析:不难想到,将数组中的所有 0 变为 1 能够使该数组所有元素的和最小。令 sum1, sum2 分别为 nums1,nums2 的不为零元素之和,cnt1,cnt2 为两个数组为 0 的元素数量,则两个数组可以达到的最小和为:sum1+cnt1,sum2+cnt2。

当两个数组至少都存在 1 个 0 时,一定存在答案,且答案为两个最小和的较大值。

当某个数组中不存在 0 时,如果另一个数组可达的最小和大于此数组的和,由于没有办法使此数组的和变大使得两个数组的和相等,返回-1.

long long minSum(int* nums1, int nums1Size, int* nums2, int nums2Size) {long long sum1 = 0, sum2 = 0;int zero1 = 0, zero2 = 0;for (int i = 0; i < nums1Size; i++) {sum1 += nums1[i];if (nums1[i] == 0) {sum1 += 1;zero1++;}}for (int i = 0; i < nums2Size; i++) {sum2 += nums2[i];if (nums2[i] == 0) {sum2 += 1;zero2++;}}if ((zero1 == 0 && sum2 > sum1) || (zero2 == 0 && sum1 > sum2)) {return -1;}return sum1 > sum2 ? sum1 : sum2;
}
http://www.xdnf.cn/news/5260.html

相关文章:

  • JVM之内存管理(二)
  • 电子电器架构 --- 车载网关的设计
  • 《类和对象(中)》
  • 力扣题解:1、两数之和 (梦开始的地方)
  • 基于 Streamlit 与 LangChain 构建具备对话记忆的 AI Agent
  • 汽车四缸汽油机曲柄连杆机构设计关键技术研究
  • DAMA第10章深度解析:参考数据与主数据管理的核心要义与实践指南
  • Ansible模块——从控制节点向目标主机复制文件!
  • 文生视频模型速读:LTX-Video
  • Flink 运维监控与指标采集实战
  • 排序算法——总结
  • MySQL COUNT(*) 查询优化详解!
  • 【C++】string类(一)构造、重载、容量操作、访问与遍历(迭代器、范围for)、练习
  • 计算机网络:WiFi路由器发射的电磁波在空气中的状态是什么样的?
  • 打工人TOP,截图工具天花板
  • 智能商品推荐系统技术路线图
  • RabbitMQ深入学习
  • Taccel:一个高性能的GPU加速视触觉机器人模拟平台
  • yum install 如何卸载
  • vue3的响应式设计原理
  • DHT11温湿度传感器
  • 05 mysql之DDL
  • 复习javascript
  • MindSpore框架学习项目-ResNet药物分类-模型评估
  • 前端EXCEL插件,智表ZCELL产品V3.0 版本发布,底层采用canvas全部重构,功能大幅扩展,性能极致提升,满足千万级单元格加载
  • git 忽略 打包文件
  • CSS弹性布局
  • 深入解析进程地址空间:从虚拟到物理的奇妙之旅
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类字体QFont)
  • Linux基本指令(一)