码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【无标题】【教3妹学编程-算法题】2918. 数组的最小相等和


    烦死了
    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
    • 否则答案为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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    基于java图书馆借阅管理系统获取(java毕业设计)
    Android 布局浅析
    【Helm三部曲】安装 chartmuseum 可视化界面 chartmuseumUi 【官方推荐安装方法】
    js/vue/tsx 中获取dom元素的方法集合
    Thiazole Orange NHS Ester,噻唑橙 NHS酯
    提高生存能力的7个关键技巧!
    Python网络爬虫:使用Requests库精通网络请求
    【如何将任何直流电机变成伺服电机】
    javaee之Elasticsearch相关知识
    iNFTnews | 元宇宙的欢乐世界:别开生面的游戏、音乐会、主题公园和电影
  • 原文地址:https://blog.csdn.net/kangbin825/article/details/134277562
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号