【无标题】【教3妹学编程

编程入门 行业动态 更新时间:2024-10-23 22:36:38

【<a href=https://www.elefans.com/category/jswz/34/1768827.html style=无标题】【教3妹学编程"/>

【无标题】【教3妹学编程


3妹:呜呜,烦死了, 脸上长了一个痘
2哥 : 不要在意这些细节嘛,不用管它,过两天自然不就好了。
3妹:切,你不懂,影响这两天的心情哇。
2哥 : 我看你是不急着找工作了啊, 工作那么辛苦,哪还有时间想这些啊。
3妹:说到找工作,我又要去刷题了。
2哥:我给你出一道关于美丽的题吧,让你的心情美丽美丽~
3妹:2哥真能忽悠,心情好了让刷题,心情不好也让刷题,那请问啥时候不用刷题勒?
2哥:是进亦忧,退亦忧。然则何时而乐耶?其必曰:刷完之后就不用刷了。哈哈
3妹:切,刷完了2哥要请吃饭!

题目:

给你两个由正整数和 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,设s1为nums1的元素和,s2为nums2的元素和,

  • 如果s1<s2,并且nums1中没有元素0, 那么s1无法增加,返回-1;
  • 如果s2<s1,并且nums2中没有元素0, 那么s2无法增加,返回-1;
  • 否则答案为max(s1,s2);

java代码:

class Solution {public long minSum(int[] nums1, int[] nums2) {long s1 = 0;boolean zero1 = false;for (int x : nums1) {if (x == 0) {zero1 = true;s1++;} else {s1 += x;}}long s2 = 0;boolean zero2 = false;for (int x : nums2) {if (x == 0) {zero2 = true;s2++;} else {s2 += x;}}if (!zero1 && s1 < s2 || !zero2 && s2 < s1) {return -1;}return Math.max(s1, s2);}
}

更多推荐

【无标题】【教3妹学编程

本文发布于:2023-11-16 02:54:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1611718.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:无标题

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!