Leetcode---114双周赛

题目列表

2869. 收集元素的最少操作次数

2870. 使数组为空的最少操作次数

2871. 将数组分割成最多数目的子数组

2872. 可以被 K 整除连通块的最大数目

一、收集元素的最小操作次数

直接模拟,倒序遍历即可,代码如下

class Solution {
public:int minOperations(vector<int>& nums, int k) {set<int>cnt;int n=nums.size();for(int i=n-1;i>=0;i--){if(nums[i]<=k) cnt.insert(nums[i]);if(cnt.size()==k) return n-i;}return n;}
};//由于数据范围比较小,这里可以用位运算将空间复杂度将为O(1)
class Solution {
public:int minOperations(vector<int>& nums, int k) {long long s=(1LL<<(k+1))-1-1;//每个二进制位,0代表没有出现,1代表出现long long x=0;int n=nums.size();for(int i=n-1;i>=0;i--){if(nums[i]<=k) x|=(1LL<<nums[i]);if(x==s) return n-i;}return n;}
};

 二、使数组为空的最小操作次数

这题只要发现规律也不是很难,根据题目意思我们需要统计每个数出现的次数,然后得到每个元素被删除的最小操作次数,相加得到答案,难点在于获取每种元素被删除的最小操作次数。

其实这题的本质就是看一个数可以由多少个2和多少个3组成,并且2的个数加3的个数要最少,如果你数学好,这题就已经被秒了,如果你数学不好,那咋们就来举几个例子,找找规律

 代码如下

class Solution {
public:int minOperations(vector<int>& nums) {int ans=0;unordered_map<int,int>cnt;for(int x:nums)cnt[x]++;for(auto&[_,c]:cnt){if(c==1) return -1;ans+=(c+2)/3;}return ans;}
};

 三、将数组分割成最多数目的子数组

这题主要是了解按位与的性质---只有同为1,按位与后才是1,所以按位与的数字越多只会让数变得越来越小,这题要求子数组按位与之和要尽可能的小, 根据性质,所有数字按位与后的值才是最小的(设为a),如果将数组拆分成n个子数组,每个子数组按位与后的结果为bi(2<=i<=n),且bi>=a,所以sum(bi)>a,所以答案返回1,对吗?

别忘了一种特殊情况,如果a=bi=0呢?这时我们就能对数组进行拆分了,根据贪心,每当我们遇到一段区间的按位与和为0,我们就将子数组个数+1,最后返回答案

代码如下

class Solution {
public:int maxSubarrays(vector<int>& nums) {int ans=0;int s=-1;//-1的二进制位为全1,不会对按位与运算产生任何影响for(int i=0;i<nums.size();i++){s&=nums[i];if(s==0){ans++;s=-1;}}return max(ans,1);}
};

四、可以被k整除的连通块的最大数目

这题找能否被k整除的连通块的个数,我们先计算每个连通块的值,只要连通块的值能被k整除,答案就+1(因为k的倍数减去k的倍数的结果还是k的倍数),代码如下

class Solution {
public:typedef long long LL;int maxKDivisibleComponents(int n, vector<vector<int>>& edges, vector<int>& values, int k) {vector<vector<int>>g(n);for(auto&e:edges){int x=e[0],y=e[1];g[x].push_back(y);            g[y].push_back(x);}//计算以每一个结点为根的连通块的值int ans=0;function<LL(int,int)>dfs=[&](int x,int fa)->LL{LL v=values[x];for(auto& y:g[x]){if(y!=fa){v+=dfs(y,x);}}if(v%k==0) ans++;return v;};dfs(0,-1);return ans;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker搭建jenkins

1.拉取镜像 docker pull jenkinsci/blueocean 2.启动容器 docker run -d -u root -p 8666:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name MyJenkins jenkinsci/blueocean 3.访问ip:port,就能访问了 4.docker logs 容器…

Go 团队发布组织 / 构建 Go module 的官方指南

导读Go 团队发布了一份官方指南&#xff0c;帮助开发者更规范地组织 / 构建 Go module。 刚接触 Go 的开发者常见问题之一是&#xff0c;“就文件和文件夹的组织布局而言&#xff0c;如何组织我的 Go 项目&#xff1f;”。这份指南就是提供建议来帮助回答这个问题。其中包括针对…

基于Softmax回归的多分类任务

Logistic回归可以有效地解决二分类问题&#xff0c;但在分类任务中&#xff0c;还有一类多分类问题&#xff0c;即类别数C大于2 的分类问题。Softmax回归就是Logistic回归在多分类问题上的推广。 使用Softmax回归模型对一个简单的数据集进行多分类实验。 首先给大家看一下需要的…

多路彩灯控制器led流水灯VHDL速度可调仿真图视频、源代码

名称&#xff1a;多路彩灯控制器led流水灯VHDL速度可调 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; 使用VHDL设计彩灯控制器&#xff0c;共24个led灯&#xff0c;分为5种不同的花样&#xff0c;可以通过按键切换花样的变化速度。 代码下载&#…

VBox启动失败、Genymotion启动失败、Vagrant迁移

VBox启动失败、Genymotion启动失败、Vagrant迁移 2023.10.9 最新版本vbox7.0.10、Genymotion3.5.0 Vbox启动失败 1、查看日志 Error -610 in supR3HardenedMainInitRuntime! (enmWhat4) Failed to locate ‘vcruntime140.dll’ 日志信息查看方法->找到虚拟机所在位置->…

如何开始学习量子机器学习

一、关于量子计算 这是我关于量子机器学习&#xff08;QML&#xff09;的第二篇文章&#xff0c;这是第一篇&#xff0c;关于为什么你应该开始学习QML。 开始研究量子机器学习很困难&#xff0c;因为我不知道我需要了解多少量子力学和计算知识。我在101年上大学时上了量子力学2…

抽象轻松的java-mybatis简单入门

第一步&#xff1a;用IDEA新建一个java包 第二步&#xff1a;在IDEA中添加数据库&#xff08;ps&#xff1a;自己百度&#xff09; 点击数据库 第二步&#xff0c;新建数据库 选择你使用的数据库 用户与密码根据自己的设置进行配置 为了更方便的查看数据库&#xff0c;可以像图…

【kubernetes】带你了解k8s中PV和PVC的由来

文章目录 1 为什么需要卷(Volume)2 卷的挂载2.1 k8s集群中可以直接使用2.2 需要额外的存储组件2.3 公有云 2 PV(Persistent Volume)3 SC(Storage Class) 和 PVC(Persistent Volume Claim)4 总结 1 为什么需要卷(Volume) Pod是由一个或者多个容器组成的&#xff0c;在启动Pod中…

Linux免密登录

目标&#xff1a; 192.168.233.31 ton-pc-003 192.168.233.32 ton-pc-004 在ton-pc-004&#xff08;以下简称004&#xff09;免密登录ton-pc-003&#xff08;以下简称003&#xff09; 具体流程和说明&#xff1a; 1、在004&#xff08;客户机&#xff09;中生成秘钥对 ssh…

【计算机视觉|人脸建模】学习从4D扫描中获取的面部形状和表情的模型

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Learning a model of facial shape and expression from 4D scans 链接&#xff1a;Learning a model of facial shape and expression from 4D scans | ACM Transactions on Graphics Pe…

解决方案:AI赋能工业生产3.0,从工业“制造”到“智造”

视频监控技术是一种既成熟又广泛应用于工业制造领域的先进技术。它可以通过安装各种摄像头和传感器来监测整个生产流程&#xff0c;包括原材料的采购、加工、装配和物流等环节&#xff0c;从而实现对生产过程的实时监控和管理&#xff0c;以及对异常事件的及时预警和响应。 在…

【SV中的多线程fork...join/join_any/join_none】

SV中fork_join/fork_join_any/fork_join_none 1 一目了然1.1 fork...join1.2 fork...join_any1.3 fork...join_none 2 总结 SV中fork_join和fork_join_any和fork_join_none; Note: fork_join在Verilog中也有&#xff0c;只有其他的两个是SV中独有的&#xff1b; 1 一目了然 1.…

FreeRTOS自我救赎3之USB虚拟串口

任何项目的功能都从需求出发&#xff0c;在这里我用的是斥侯蜂的一块STM32F407ZGT6 在开发一个项目的过程中&#xff0c;免不了串口调试&#xff0c;而这块板子板载的mircousb不是直接连的引脚而是一个OTGUSB

SpringCloud Alibaba - Seata 部署 TC 服务,并集成微服务

目录 一、Seata 架构 1.1、Seata 架构重要角色 1.2、部署 TC 服务 1.2.1、前言 1.2.2、下载 seata-server 包&#xff0c;解压 1.2.3、修改配置 1.2.4、在 nacos 中添加配置 1.2.5、创建数据库表 1.2.6、启动 TC 服务 1.3、微服务集成 Seata 1.3.1、引入依赖 1.3.2、…

SpringBoot 实现数据脱敏

SpringBoot 实现数据脱敏 前言Hutool 实现数据脱敏引入依赖脱敏工具类代码实现 使用注解的方式定义枚举自定义序列化类定义注解测试 前言 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形&#xff0c;实现敏感隐私数据的可靠保护。 数据脱敏常用规则有替换、重排、加密…

C++对象模型(8)-- 数据语义学:this指针

1、this指针的认识 this 是 C 中的一个关键字&#xff0c;也是一个 const 指针 &#xff0c;它指向当前对象&#xff0c;通过它可以访问当前对象的所有成员。所谓当前对象&#xff0c;是指正在使用的对象。 假如有这么一个类&#xff1a; class Base { public:int b_i;int b…

[NewStarCTF 2023 公开赛道] week1 Crypto

brainfuck 题目描述&#xff1a; [>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<-]>>>>>>>.>----.<-----.>-----.>-----.<<<-.>>..…

论文解析——异构多芯粒神经网络加速器

作者 朱郭益, 马胜&#xff0c;张春元, 王波&#xff08;国防科技大学计算机学院&#xff09; 摘要 随着神经网络技术的快速发展, 出于安全性等方面考虑, 大量边缘计算设备被应用于智能计算领域。首先&#xff0c;设计了可应用于边缘计算的异构多芯粒神经网络加速器其基本结构…

TCP相关面试题

TCP相关面试题 题目1 介绍一下TCP三次握手的过程 介绍TCP三次握手应该从3个方面进行回答&#xff0c;分别是数据包名称&#xff0c;客户端与服务端的状态变化&#xff0c;数据包的序号变化。而不能只是简单回答发送的数据包名称。 TCP三次握手的过程如下&#xff1a; 从数据…

关于Jupyter notebook 创建python3 时进去不能重命名问题及不能编程问题

首先写这篇博客时&#xff0c;已经被这个问题折磨了三天&#xff0c;看了很多博客&#xff0c;其实解决这个问题的关键就是要么没有下pyzmq或者等级太高&#xff0c;要么等级太低&#xff0c;首先我会按照我思路来。 问题如图&#xff1a; 1.自动换行 2.不能重命名 我的解决办…