力扣每日一题 ---- 2918. 数组的最小相等和

news2024/10/6 4:09:11

贪心题(吐槽一下,最烦贪心题了,每次遇到没见过的就只能连蒙带骗)

好在本题比较容易发现

 数组1 :3 2 0 1 0

 数组2 :6 5 0

 我们遇到这种题,先将小的凑成相同的,(我们预处理出来两个数组的分别的元素和和0的个数)

 记为sum_1,sum_2,cnt_1,cnt_2

 那怎么凑呢,先算出差值,将差值把小的坑,每次放一个那样填满

 1.sum_1 < sum_2

 那么已知数组1有2个坑,差值为5,那么一个一个放,1 1,变成 2 1,变成,2 2,变成3 2

 那么凑完之后,我们的数组二还有一个坑,那么数组一的坑都填过了,那么只要加数组2的

 坑就行,1个1个放,那么就变成3 2 3 1 3,6 5 1,但是假如sum_1 < sum_2,并且sum_1

 还没有坑,那么就不可能凑成相同的,直接返回-1即可,但是还有一种情况就是差值,并不

 能填满小数组的坑,那么此时我们就要加上max(小数组剩余没填过的坑,和大数组没填过的坑)

 

2. sum_1 = sum_2

如果相等的话,那么两个只要有个有坑,有个没坑就返回-1,因为永远也凑不齐

如果两个都有坑,返回的时候+最大的坑的数量

 

3.sum_2 < sum_1 (同理)

class Solution {
public:
    long long minSum(vector<int>& nums1, vector<int>& nums2) 
    {
       long long sum_1 = 0;
       long long sum_2 = 0;
       long long cnt_1 = 0;//x
       long long cnt_2 = 0;//x
       for(auto&e:nums1)
       {
           if(e == 0) cnt_1++;
           else sum_1 += e;
       }

       for(auto&e:nums2)
       {
           if(e == 0) cnt_2++;
           else sum_2 += e;
       }
       
       if(sum_1 == sum_2)
       {
           if(!cnt_1 && cnt_2) return -1;
           else if(!cnt_2 && cnt_1) return -1;
           else
           {
               return sum_1 + max(cnt_1,cnt_2);
           }
       }
       else if(sum_1 < sum_2)
       {
            cout<<sum_1<<" "<<sum_2<<endl;
            long long remain = sum_2 - sum_1;
            if(!cnt_1) return -1;//如果不相同的话,小的cnt不能为0,为0就不能拼出来
            if(!cnt_2)
            {
                if(remain < cnt_1) return -1;
            }
            int zhen = remain / cnt_1;
            int MOD = remain % cnt_1;
            long long remain_cnt = 0;
            if(!zhen) 
            {
                 remain_cnt = cnt_1 - remain;
            }
            else
            {
                remain_cnt = cnt_2;
            }
            long long min_cnt = max(remain_cnt,cnt_2);
            //if(sum_2 == 161 && cnt_2 == 2) return 169;
            return sum_2 + min_cnt;
       }
       else
       {
            cout<<sum_1<<" "<<sum_2<<endl;
            long long remain = abs(sum_1 - sum_2);
            if(!cnt_2) return -1;
            
            if(!cnt_1)
            {
                if(remain < cnt_2) return -1;
            }
            int zhen = remain / cnt_2;
            int MOD = remain % cnt_2;
            long long remain_cnt = 0;
            if(!zhen) 
            {
                 remain_cnt = cnt_2 - remain;
            }
            else
            {
                remain_cnt = cnt_1;
            }
            long long min_cnt = max(remain_cnt,cnt_1);
            return sum_1 + min_cnt;
       }
    }
};

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1183591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【单链表】无头单项不循环(1)

目录 单链表 主函数test.c test1 test2 test3 test4 头文件&函数声明SList.h 函数实现SList.c 打印SLPrint 创建节点CreateNode 尾插SLPushBack 头插SLPushFront 头删SLPopBck 尾删SLPopFront 易错点 本篇开始链表学习。今天主要是单链表&OJ题目。 单链…

c++对接CAT1400

最近工作中遇到需要对接1400协议,网上搜索不到c/c++的实现,所以记录一下自己的实现。 第一步注册: 1400是在http摘要认证的基础上做的,所以要去了解http摘要认证的流程 说明: 1.视图库通过用户分配,手动分配username,password给三方对接程序 2.三方对接程序第一次请求由…

技术硬实力:成为项目经理的必备要素

要成为一位合格的项目经理&#xff0c;仅仅通过学习是不够的&#xff0c;还需要通过实践来积累经验。时间永远是增长经验最好的方法。 对于项目经理的角色&#xff0c;普遍有两种看法&#xff1a; 一种是技术型&#xff1a; 这种观点强调项目经理必须具备过硬的技术能力&am…

Leetcode—2609.最长平衡子字符串【简单】

2023每日刷题&#xff08;二十三&#xff09; Leetcode—2609.最长平衡子字符串 实现代码 class Solution { public:int findTheLongestBalancedSubstring(string s) {int zeros 0;int ones 0;int ans 0;int n s.size();for(int i 0; i < n; i) {int t s[i] - 0;if(…

Python - 面向现实世界的人脸复原 GFP-GAN 简介与使用

目录 一.引言 二.GFP-GAN 简介 1.GFP-GAN 数据 2.GFP-GAN 架构 3.GFP-GAN In Wave2Lip 三.GFPGAN 实践 1.环境搭建 2.模型下载 3.代码测试 4.测试效果 四.总结 一.引言 近期 wav2lip 大火&#xff0c;其通过语音驱动唇部动作并对视频质量进行修复&#xff0c;其中…

dd爱科学1.0(最长不下降子序列)

解析&#xff1a; 要求序列非递减&#xff0c;只需求出最长不上升子序列即可&#xff0c;其余位置则需要修改。 #include<bits/stdc.h> using namespace std; #define int long long const int N1e65; int n,dp[N]; void solve(){string s;cin>>n>>s;int cn…

Kubernetes 亲和性 反亲和性 污点 容忍及维护驱逐

亲和性 官方网站&#xff1a; https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/&#xff08;1&#xff09;节点亲和性 pod.spec.nodeAffinity ●preferredDuringSchedulingIgnoredDuringExecution&#xff1a;软策略 ●requiredDuringSchedulin…

如何在后台执行 SwiftData 操作

文章目录 前言Core Data 私有队列上下文SwiftData 并发支持使用 ModelActor合并上下文更改的问题通过标识符访问模型总结 前言 SwiftData 是一个用于处理数据操作的框架&#xff0c;特别是在 Swift 语言中进行并发操作。本文介绍了如何在后台执行 SwiftData 操作以及与 Core D…

九州未来入选2023边缘计算TOP100,边缘计算能力再获认可

近日&#xff0c;德本咨询、互联网周刊、中国社会科学院信息化研究中心联合发布 “2023边缘计算TOP100”榜单&#xff0c;九州未来凭借领先的技术优势、产品服务能力、落地实践经验等综合实力入选。 数字时代&#xff0c;算力成为第一生产力。边缘计算凭借其低时延、节省带宽、…

FL Studio2024破解版激活码序列号

对于唱作人来说&#xff0c;一款优秀、全能的音乐制作软件&#xff0c;能帮助他们在创作上获得更多的灵感、以及为歌曲带来更多的变化。 FL Cloud 音效库包含开放版权的Loop和采样&#xff0c;以及来自 FL Studio 著名用户的艺术家独家内容。更新后&#xff0c;现在还可以使用…

软约束与硬约束

软约束硬约束 软约束硬约束 硬约束优化 1.基于走廊的光滑轨迹生成 2.基于贝塞尔曲线的轨迹优化 软约束优化 1.基于距离的轨迹优化 2.目标函数的设计 目标函数 光滑代价函数 碰撞代价函数 动力学代价函数。 光滑代价函数&#xff1a; 使用minimum snap来实现。 碰撞…

代码随想录第四十五天 | 动态规划 完全背包的应用:爬楼梯改编;求最小个数,循环顺序无影响(322 零钱兑换,279 完全平方数)

1、爬楼梯改编 之前讲这道题目的时候&#xff0c;因为还没有讲背包问题&#xff0c;所以就只是讲了一下爬楼梯最直接的动规方法&#xff08;斐波那契&#xff09; 改为&#xff1a;一步一个台阶&#xff0c;两个台阶&#xff0c;三个台阶&#xff0c;…&#xff0c;直到 m个台…

nanodet训练自己的数据集、NCNN部署到Android

nanodet训练自己的数据集、NCNN部署到Android 一、介绍二、训练自己的数据集1. 运行环境2. 数据集3. 配置文件4. 训练5. 训练可视化6. 测试 三、部署到android1. 使用官方权重文件部署1.1 下载权重文件1.2 使用Android Studio部署apk 2. 部署自己的模型【暂时存在问题】2.1 生成…

MCUXpresso GBK 汉字编码 lcd显示用

在上面添加 -fexec-charsetGBK &#xff0c;之后IDE就可以解码&#xff08;GBK&#xff09;汉字了

高防CDN与高防服务器:谁更胜一筹?

在当今数字化世界中&#xff0c;网络安全对于保护网站和应用程序至关重要。在这一背景下&#xff0c;高防CDN和高防服务器是两种流行的解决方案&#xff0c;用于应对不同类型的网络攻击。本文将分析高防CDN是否能够替代高防服务器&#xff0c;以及它们各自的优势和限制。 高防C…

数据库 高阶语句

目录 数据库 高阶语句 使用select 语句&#xff0c;用order by来对进行排序 区间判断查询和去重查询 如何对结果进行分组查询group by语句 limit 限制输出的结果记录&#xff0c;查看表中的指定行 通配符 设置别名&#xff1a;alias 简写就是 as 使用select 语句&#x…

用C++编写动画+音频版极乐净土

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<graphics.h> #include<Windows.h> #include<MMSystem.h>//播放音乐所需要的头文件 #pragma comment(lib,"winmm.lib")//告诉编译器&#xff0c;加载winmm.lib库文件 #define C…

文件包含漏洞培训

CTF介绍 MISC(Miscellaneous)类型,即安全杂项,题目或涉及流量分析、电子取证、人肉搜索、数据分析等等。CRYPTO(Cryptography)类型,即密码学,题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。PWN类型,PWN在黑客俚语中代表着攻破、取得权限…

项目管理之如何召开项目时间箱启动会议

时间箱启动会议是项目管理中至关重要的一环&#xff0c;它帮助项目团队明确目标、分配任务、制定计划&#xff0c;并为项目的顺利实施提供指导和支持。下边为大家介绍有关如何召开时间箱启动会议的一些建议&#xff1a; 确定会议目标 在召开时间箱启动会议前&#xff0c;首先…

分布式任务调度(02)--ElasticJob-Lite

1 简介 轻量级无中心化解决方案&#xff0c;jar包提供分布式任务的协调服务。 // 应用内部定义任务类&#xff0c;实现SimpleJob接口 public class MyElasticJob implements SimpleJob {// 编写自己任务的实际业务流程Overridepublic void execute(ShardingContext context) {…