news 2026/4/29 0:04:00

2918. 数组的最小相等和

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2918. 数组的最小相等和

题目链接

2918. 数组的最小相等和 - 力扣(LeetCode)

题目描述

给你两个由正整数和0组成的数组nums1nums2

你必须将两个数组中的 所有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. 问题理解
    • 给定两个数组nums1nums2,可以将数组中的0替换为任意正整数。
    • 目标是通过替换0,使得两个数组的元素和相等,求这个相等的和的最小值。
    • 如果无法使两个数组的和相等,则返回-1。
  2. 关键思路
    • 计算数组和:对于每个数组,计算其元素和,其中0可以替换为1(最小值),因此每个0贡献1到总和中。
    • 检查可行性
      • 如果一个数组没有0且其和小于另一个数组的和,则无法通过替换0来平衡,因为只能增加有0数组的和。
      • 否则,可以通过替换0来平衡两个数组的和。
    • 最小和:平衡后的和是两个数组和中的较大值,因为较小的和需要通过替换0增加到较大的和。
  3. 算法流程
    • 使用calc方法计算每个数组的和和是否包含0。
    • 检查是否可以平衡两个数组的和。
    • 返回平衡后的和(即较大的和)。

题解代码

classSolution{// 定义一个内部记录类Pair,包含sum和zero两个字段privaterecordPair(longsum,booleanzero){}publiclongminSum(int[]nums1,int[]nums2){// 计算两个数组的sum和是否包含0Pairp1=calc(nums1);Pairp2=calc(nums2);// 如果某个数组没有0且其sum小于另一个数组的sum,则无法平衡if(!p1.zero&&p1.sum<p2.sum||!p2.zero&&p2.sum<p1.sum){return-1;}// 返回两个sum中的较大值returnMath.max(p1.sum,p2.sum);}// 计算数组的sum和是否包含0privatePaircalc(int[]nums){longsum=0;booleanzero=false;for(intx:nums){if(x==0){zero=true;// 标记存在0sum++;// 0可以替换为1,所以sum加1}else{sum+=x;// 非0直接累加}}returnnewPair(sum,zero);}}

复杂度分析

  1. 时间复杂度
    • 计算两个数组的和和是否包含0:O(n + m),其中n和m分别是nums1nums2的长度。
    • 比较和检查可行性:O(1)。
    • 总时间复杂度:O(n + m)。
  2. 空间复杂度
    • 使用了常数空间存储Pair对象和临时变量。
    • 总空间复杂度:O(1)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 23:56:49

Zotero PDF Translate:开源效率工具的终极使用指南

Zotero PDF Translate&#xff1a;开源效率工具的终极使用指南 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh_mirrors/zo/…

作者头像 李华
网站建设 2026/4/28 23:55:29

网盘直链下载助手:免费获取八大网盘真实下载链接的终极解决方案

网盘直链下载助手&#xff1a;免费获取八大网盘真实下载链接的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云…

作者头像 李华
网站建设 2026/4/28 23:54:21

FITC标记的GUCY2C Fc嵌合蛋白在结直肠癌靶向治疗研究中的应用

一、GUCY2C蛋白的结构特征与配体识别鸟苷酸环化酶C属于受体鸟苷酸环化酶家族&#xff0c;是细菌热稳定肠毒素的肠道受体&#xff0c;因此又称为热稳定肠毒素受体。人GUCY2C基因定位于染色体12q12&#xff0c;其编码产物为一种I型跨膜蛋白&#xff0c;分子量约为120kDa。GUCY2C蛋…

作者头像 李华
网站建设 2026/4/28 23:53:22

打破城通网盘速度限制:ctfileGet如何实现10倍下载加速的技术揭秘

打破城通网盘速度限制&#xff1a;ctfileGet如何实现10倍下载加速的技术揭秘 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否曾面对城通网盘缓慢的下载速度感到束手无策&#xff1f;当我们试图下…

作者头像 李华
网站建设 2026/4/28 23:50:49

如何快速扩展Windows虚拟显示器:终极完整指南

如何快速扩展Windows虚拟显示器&#xff1a;终极完整指南 【免费下载链接】virtual-display-rs A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10. Works with VR, obs, streaming software, etc 项目地址: https://gitcode.com/gh…

作者头像 李华
网站建设 2026/4/28 23:47:33

YOLO12效果展示:360°全景图中多方向行人/车辆/交通标志联合检测

YOLO12效果展示&#xff1a;360全景图中多方向行人/车辆/交通标志联合检测 1. 引言&#xff1a;当目标检测遇上360全景图 想象一下&#xff0c;你正在开发一个智能安防系统&#xff0c;或者一个自动驾驶的感知模块。你面对的输入不是一张普通的照片&#xff0c;而是一张由多个…

作者头像 李华