leetcode 324场周赛

news2025/3/14 3:16:59

第三题

2508. 添加边使所有节点度数都为偶数

  1. 连接一条边,一定会让两个点的奇偶性改变。最多连接两条边,最多有四个点的奇偶性改变。所以超过了四个点为奇数点,就不可能了。
    并且,由于一次改变两个,奇数点的个数一定是偶数。那么奇数点的个数只能是0, 2, 4。所以可以直接分类讨论:
  • 如果是0, 直接返回true

  • 如果是2, 有两种情况正确:

    • 两个奇数点,a和b,他们之间没有边,可以直接相连。
    • 他们之外存在一个点c,这个点和a和b都没有边。
  • 如果是4,只有一种情况:他们之间可以形成两对点,每对点的两个点不相连。

image.png

实现方面,因为要多次检查两个点之间是否有边,所以可以写一个函数进行判断。

class Solution {
public:
    static const int maxn = 1e5 + 5;
    vector<int>g[maxn];
    bool check(int a, int b) {
        // unordered_map<int, int>aset;
        for (int v : g[a]) {
            if (v == b) return false;
        }
        return true;
    }
    bool isPossible(int n, vector<vector<int>>& edges) {
        unordered_map<int, int>d;

        for (auto vec : edges) {
            int a = vec[0], b = vec[1];
            g[a].push_back(b);
            g[b].push_back(a);
            d[a]++;
            d[b]++;
        }
        vector<int>p;
        for (auto [a, b] : d) {
            if (b % 2 == 1) p.push_back(a);
        }
        if (p.size() > 4 || p.size() % 2 != 0) return false;
        if (p.size() == 0) return true;
        if (p.size() == 2) {
            int a = p[0], b = p[1], flag = 1;
            if (check(a, b)) return true;
            for (int i = 1; i <= n; i++) 
                if (check(a, i) && check(b, i)) return true;
            return false;
        }
        // p.size() == 4;
        if (check(p[0], p[1]) && check(p[2], p[3])) return true;
        if (check(p[0], p[2]) && check(p[1], p[3])) return true;
        if (check(p[0], p[3]) && check(p[1], p[2])) return true;
        return false;
    }
};

第四题

很明显就是最近公共祖先,并且完全二叉树的性质。
p[a] = a / 2;

超时代码:

  1. 先找到a的所有父结点,存入map,
  2. 遍历b的父结点,找到a,b的最近公共祖先
  3. 再次遍历,计算a到祖先和b到祖先的最近距离之和。
  4. 答案等于结果加上1。

时间复杂度O(m * n * n)

class Solution {
public:
    vector<int> cycleLengthQueries(int n, vector<vector<int>>& queries) {
        vector<int>ans;
        for (auto vec : queries) {
            int a = vec[0], b = vec[1];
            unordered_map<int, int>fa;
            int p = a;
            fa[p] = 1;
            while (p != 1) {
                p /= 2;
                fa[p] = 1;
            }
            p = b;
            while (true) {            // 找到公共的爹, 就是p
                if (fa[p]) break;
                p /= 2;
            }
            int cnt = 0;
            while (a != p) a /= 2, cnt++;
            while (b != p) b /= 2, cnt++;
            ans.push_back(cnt + 1);
        }
        return ans;
    }
};

不超时的代码
时间复杂度O(n * m)

class Solution {
public:
    vector<int> cycleLengthQueries(int n, vector<vector<int>>& queries) {
        vector<int>ans;
        for (auto vec : queries) {
            int a = vec[0], b = vec[1];
            int cnt = 1;
            while (a != b) {
                cnt++;
                if (a < b) swap(a, b);
                a >>= 1;
            }
            ans.push_back(cnt);
        }
        return ans;
    }
};

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

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

相关文章

[附源码]Nodejs计算机毕业设计酒店管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Mybatis之类型转换器TypeHandler的初步了解及具体使用方法

一、TypeHandler简介 1、什么是TypeHandler&#xff1f; 简介&#xff1a;TypeHandler&#xff08;类型转换器&#xff09;在mybatis中用于实现 java类型 和 JDBC类型 的相互转换。mybatis使用 prepareStatement 来进行参数设置的时候&#xff0c;需要通过 TypeHandler 将传入的…

ABAP MESSAGE消息类的创建以及调用方法。

消息类的类型一共分为六种&#xff0c;分别如下表所示 TYPE描述使用效果是否终止事务A(Abortion)终止在PUPUP画面显示是I(Information)信息在PUPUP画面显示否E(Error)错误在状态栏显示是W(Warning)警告在状态栏显示否S(Success)成功在次画面显示否X(Exit)退出在强制终止的画面…

大数据培训Impala之优化

大数据培训Impala之优化 尽量将StateStore和Catalog单独部署到同一个节点&#xff0c;保证他们正常通行。 通过对Impala Daemon内存限制&#xff08;默认256M&#xff09;及StateStore工作线程数&#xff0c;来提高Impala的执行效率。 SQL优化&#xff0c;使用之前调用执行计…

SEO优化的策略_网站seo策略

现在SEO优化成为了每一个企业进行网络营销策划的重要命题,如何做好SEO优化更是企业经常在思考的问题,SEO优化做得好,不仅可以减少企业推广的费用,更是有效的提高了推广的效果,一个好的SEO优化策略应该如何完成呢?应该从以下5点做好网站seo策略。 SEO优化策略1.确定目的 …

MySQL 数据库 - 索引与事务

文章目录1.索引1.1 优缺点1.2 使用2.事务2.1 事务的使用2.2 四大特性2.2.1 原子性2.2.2 隔离性1.索引 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。 可以对表中的一列或多列创建索引&#xff0c;并指定索引的类型&#xff0c;各类索引有各自的数据结…

[附源码]计算机毕业设计Node.jsX工厂电影网站(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

企业成立不到三年,能申报高企吗?

高企认定可谓是好处多多,不仅能享受税收优惠、专项补贴、贷款融资,还能提升企业核心竞争力,但在申报国家高新技术企业认定时会审核企业前三年的净资产增长率和销售收入增长率,这对于成立不满三年的企业而言,企业成长性这一项指标的得分就不可能拿到20分满分,甚至可能是0分。那么…

技术分享 | Jenkins 节点该如何管理?

Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点)&#xff0c;分布式构建能够让同一套代码在不同的环境(如&#xff1a;Windows 和 Linux 系统)中编译、测试等 Jenkins 的任务可以分布在不同的节点上运行节点上需要配置 Java 运行时环境&#xff0c;JDK 版本大于 1.5节点…

[附源码]计算机毕业设计Python房屋租赁信息系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

热门技术中的应用:容器技术中的网络-第29讲-容器网络:来去自由的日子,不买公寓去合租

如果说虚拟机是买公寓,容器则相当于合租,有一定的隔离,但是隔离性没有那么好。云计算解决了基础资源层的弹性伸缩,却没有解决PaaS层应用随基础资源层弹性伸缩而带来的批量、快速部署问题。于是,容器应运而生。 容器就是Container,而Container的另一个意思是集装箱。其实…

持续测试的3个关键点才能成功实施

摘要&#xff1a;除非你在过去的一两年里一直处于冬眠状态&#xff0c;否则我相信你已经充分意识到持续测试的好处&#xff1a;降低开发成本、减少浪费、提高系统可靠性、降低发布风险等等. 当然&#xff0c;您认为在现实世界中将其付诸实践并不像某些供应商那样简单。很明显&a…

Twitter整合营销的方法技巧

对于独立站卖家来说&#xff0c;在Twitter它不仅能获取有价值的客户信息&#xff0c;收集粉丝反馈&#xff0c;还能影响消费者的决策。73%的数据显示&#xff0c;Twitter用户每个月都会在网上购物&#xff0c;甚至比较Facebook还要高。所以今天就和卖家们分享Twitter营销到底该…

6 | 渗透测试工具Kali Linux安装与使用

1 Kali Linux简介 渗透测试是通过模拟恶意黑客的攻击方法&#xff0c;来评估计算机网络系统安全的一种评估方法&#xff0c;这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析。渗透测试所需的工具可以在各种Linux操作系统中找到&#xff0c;需要手动安装这些工具。由于…

[附源码]Nodejs计算机毕业设计竞赛报名管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

艾美捷葡萄糖比色测定试剂盒参数说明和相关研究

艾美捷葡萄糖比色测定试剂盒仅供研究使用&#xff0c;该试剂盒是一种比色测定试剂盒,设计用于定量和检测血清、血浆、尿液、缓冲液和组织培养基中的葡萄糖而设计。 艾美捷葡萄糖比色测定试剂盒基本信息&#xff1a; 英文名字&#xff1a;Glucose Colorimetric Assay Kit 编号…

语音识别芯片LD3320介绍续

语音识别芯片LD3320寄存器介绍 语音识别芯片LD3320寄存器大部分都是有读和写的功能&#xff0c;有的是接受数据的&#xff0c;有的是设置开关和状态的。寄存器的地址空间为8位&#xff0c;可能的值为00H到FFH。但除了本文档介绍的寄存器&#xff0c;其他大部分为测试或保留功能…

[封装自己的ui组件库] upload的实现与难点

效果 1、服务文件(tmp为保存上传文件文件夹) 2、点击上传 3、图片列表 4、拖拽 5、手动上传 5、上传失败 6、服务 问题 1、如何打开文件列表 2、如何取出文件 3、对取出的文件校验&#xff1f; 4、如何发送请求(多文件上传&#xff1f;) 5、如何完成上传列表展示 6、拖拽…

基于遗传算法改进的DELM预测 - 附代码

遗传算法改进的深度极限学习机DELM的回归预测 文章目录遗传算法改进的深度极限学习机DELM的回归预测1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.遗传算法4.遗传算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1a;https:…

three.js之由线到管(管道缓冲几何体)

文章目录简介例子解释专栏目录请点击 简介 一条曲线怎么生成一个个曲线路径一行的管状呢&#xff1f;这个时候我们就用到了three.js的一个api:TubeGeometry&#xff0c;官网 例子 <!DOCTYPE html> <html lang"en"><head><meta charset"…