Leetcode 第 418 场周赛题解

Leetcode 第 418 场周赛题解

  • Leetcode 第 418 场周赛题解
    • 题目1:3309. 连接二进制表示可形成的最大数值
      • 思路
      • 代码
      • 复杂度分析
    • 题目2:3310. 移除可疑的方法
      • 思路
      • 代码
      • 复杂度分析
    • 题目3:3311. 构造符合图结构的二维矩阵
      • 思路
      • 代码
      • 复杂度分析
    • 题目4:3312. 查询排序后的最大公约数
      • 思路
      • 代码
      • 复杂度分析

Leetcode 第 418 场周赛题解

题目1:3309. 连接二进制表示可形成的最大数值

思路

枚举 6 种连接情况,返回其中的最大值。

代码

class Solution {
public:int maxGoodNumber(vector<int>& nums) {int a = nums[0];int b = nums[1];int c = nums[2];return max({getNum(a, b, c), getNum(a, c, b), getNum(b, a, c),getNum(b, c, a), getNum(c, a, b), getNum(c, b, a)});}// 辅函数 - 求 a、b、c 的连接数值int getNum(int a, int b, int c) {string s = trans(a) + trans(b) + trans(c);ranges::reverse(s);int res = 0;for (int i = 0; i < s.length(); i++)res += (s[i] - '0') * (int)pow(2, i);return res;}// 辅函数 - 转换成二进制表示string trans(int x) {string s;while (x) {s.insert(s.begin(), x % 2 + '0');x /= 2;}return s;}
};

复杂度分析

时间复杂度:O(logX),其中 X=127 是元素取值上限。

空间复杂度:O(1)。

题目2:3310. 移除可疑的方法

思路

从 k 开始深度优先搜索,标记所有可以访问到的点。题目把这些点叫做可疑方法。

遍历 invocations,如果发现从「非可疑方法」到「可疑方法」的边,则无法移除可疑方法,返回数组 [0,1,2,⋯,n−1]。

否则,可以移除所有可疑方法。把没有被标记为可疑方法的点加入答案。

代码

class Solution {
public:vector<int> remainingMethods(int n, int k,vector<vector<int>>& invocations) {vector<vector<int>> grid(n);// 建图for (vector<int>& invocation : invocations) {int from = invocation[0], to = invocation[1];grid[from].push_back(to);}vector<bool> suspicious(n, false); // 可疑方法function<void(int)> dfs = [&](int x) {suspicious[x] = true;for (int& y : grid[x])if (suspicious[y] == false)dfs(y);};dfs(k);for (vector<int>& invocation : invocations) {int from = invocation[0], to = invocation[1];if (suspicious[from] == false && suspicious[to] == true) {// 有【非可疑方法】->【可疑方法】的边,无法移除可疑方法vector<int> ans(n);iota(ans.begin(), ans.end(), 0);return ans;}}// 移除所有可疑方法vector<int> ans;for (int i = 0; i < n; i++)if (suspicious[i] == false)ans.push_back(i);return ans;}
};

复杂度分析

时间复杂度:O(n+m),其中 m 是数组 invocations 的长度。

空间复杂度:O(n+m),其中 m 是数组 invocations 的长度。

题目3:3311. 构造符合图结构的二维矩阵

思路

题解:https://leetcode.cn/problems/construct-2d-grid-matching-graph-layout/solutions/2940423/gou-zao-fen-lei-tao-lun-by-tsreaper-qxqc/

代码

class Solution {
public:vector<vector<int>> constructGridLayout(int n, vector<vector<int>>& edges) {// 建图并记录节点度数vector<vector<int>> grid(n);vector<int> degree(n, 0);for (vector<int>& edge : edges) {grid[edge[0]].push_back(edge[1]);grid[edge[1]].push_back(edge[0]);degree[edge[0]]++;degree[edge[1]]++;}int minDegree = *min_element(degree.begin(), degree.end());int maxDegree = *max_element(degree.begin(), degree.end());// 先求出矩阵最左边一列vector<int> vec;if (minDegree == 1) {// 情况 1:一行的矩阵for (int i = 0; i < n; i++)if (degree[i] == 1) {vec.push_back(i);break;}} else {int S;for (int i = 0; i < n; i++)if (degree[i] == 2) {S = i;break;}vec.push_back(S);if (maxDegree <= 3) {// 情况 2:两行的矩阵vec.push_back(degree[grid[S][0]] == 2 ? grid[S][0]: grid[S][1]);} else {// 情况 3:矩阵至少三行int now = grid[S][0], last = S;while (degree[now] != 2) {vec.push_back(now);for (int& fn : grid[now])if (degree[fn] <= 3 && fn != last) {last = now;now = fn;break;}}vec.push_back(now);}}int row = vec.size(), col = n / row;vector<vector<int>> ans(row, vector<int>(col, 0));vector<bool> visited(n, false);for (int i = 0; i < row; i++) {ans[i][0] = vec[i];visited[vec[i]] = true;}// 每次枚举一列,找出每个元素还不在矩阵里的邻居放在右边for (int j = 0; j + 1 < col; j++)for (int i = 0; i < row; i++)for (int& fn : grid[ans[i][j]])if (!visited[fn]) {ans[i][j + 1] = fn;visited[fn] = true;}return ans;}
};

复杂度分析

时间复杂度:O(n+m),其中 m 是数组 edges 的长度。

空间复杂度:O(n+m),其中 m 是数组 edges 的长度。

题目4:3312. 查询排序后的最大公约数

思路

题解:https://leetcode.cn/problems/sorted-gcd-pair-queries/solutions/2940415/mei-ju-rong-chi-qian-zhui-he-er-fen-pyth-ujis/

代码

class Solution {
public:vector<int> gcdValues(vector<int>& nums, vector<long long>& queries) {int mx = *max_element(nums.begin(), nums.end());vector<int> cnt(mx + 1, 0);for (int& num : nums)cnt[num]++;vector<long long> cnt_gcd(mx + 1, 0);for (int i = mx; i > 0; i--) {int c = 0;for (int j = i; j <= mx; j += i) {c += cnt[j];// gcd 是 2i,3i,4i,... 的数对不能统计进来cnt_gcd[i] -= cnt_gcd[j];}// c 个数选 2 个,组成 c * (c - 1) / 2 个数对cnt_gcd[i] += (long long)c * (c - 1) / 2;}vector<long long> preSum(mx + 1);preSum[0] = cnt_gcd[0];for (int i = 1; i < preSum.size(); i++)preSum[i] = preSum[i - 1] + cnt_gcd[i];vector<int> ans(queries.size());for (int i = 0; i < queries.size(); i++)ans[i] = upper_bound(preSum.begin(), preSum.end(), queries[i]) - preSum.begin();return ans;}
};

复杂度分析

时间复杂度:O(n+(U+q)logU),其中 n 是数组 nums 的长度,U=max(nums),q 是数组 queries 的长度。

空间复杂度:O(U),其中 U=max(nums),返回值不计入。

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

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

相关文章

图解网络OSI模型与TCP/IP

一、OSI模型与TCP/IP 1、OSI模型 OSI/RM&#xff08;Open System Interconnection&#xff0c;开放系统互联参考模型&#xff09;是由ISO&#xff08;国际标准组织&#xff09;创建的一个有助于开放和理解计算机的通信模型&#xff0c;OSI七层参考模型作为一套规范的标准&…

端口冲突的解决方案以及SpringBoot自动检测可用端口demo

端口冲突的解决方案 端口冲突通常发生在尝试运行两个或多个应用程序或服务时&#xff0c;它们尝试使用同一个端口号&#xff0c;导致系统无法正确分配资源。 各种端口错误 你是否遇到过下面这些报错信息呢&#xff1f; Windows 系统报错&#xff1a; 系统错误 1004 套接字操作…

[C#]使用纯opencvsharp部署yolov11-onnx图像分类模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 使用纯OpenCvSharp部署YOLOv11-ONNX图像分类模型是一项复杂的任务&#xff0c;但可以通过以下步骤实现&#xff1a; 准备环境&#xff1a;首先&#xff0c;确保开发环境已安装OpenCvSharp和必…

初始项目托管到gitee教程,开箱即用

0.本地仓库与远程仓库关联&#xff08;需先在gitee创建仓库&#xff09; ①打开powershell生成ssh key ssh-keygen -t ed25519 -C "Gitee SSH Key"-t key 类型-C 注释 生成成功如下&#xff0c;并按下三次回车 ②查看公私钥文件 ls ~/.ssh/输出&#xff1a; id_…

PPPoE协议个人理解+报文示例+典型配置-RFC2516

个人认为&#xff0c;理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息&#xff0c;更加便于理解协议。 因此本文将在PPPoE协议报文的基础上进行介绍。 PPPoE协议发展 关于PPPoE基本原理&#xff0c;可参考1999年发布的《RFC2516-A Method fo…

大模型客服的未来发展趋势

在当今数字化时代&#xff0c;大模型客服正以惊人的速度改变着客户服务的格局。随着技术的不断进步&#xff0c;大模型客服的未来发展趋势充满了无限可能。随着人工智能技术的快速发展&#xff0c;智能客服领域正迎来一场前所未有的变革。大模型客服作为其中的重要分支&#xf…

32位机器上指针大小为什么是4字节?

&#xff08;1&#xff09;32位机器可寻址内存空间位4GB。为什么&#xff1f; 32位机器的总线宽度是32位&#xff0c;每一位可以是0或者1&#xff0c;那么32位可以表示个不同的值&#xff0c;也就是能寻址到个内存地址&#xff0c;每个内存地址对应一个内存单元&#xff08;1个…

RFID学习

24.10.5学习目录 一.简介1.组成2.RFID协议3.RFID卡 一.简介 RFID被称为无线射频识别&#xff0c;其是一种通信技术&#xff0c;通过无线电讯号耦合识别特定目标并读写相关数据&#xff1b; RFID主要位于典型物联网架构中的感知层&#xff0c;其因为具有非接触式特性&#xff…

hiricacp 连接池校验机制

一、背景 项目发生告警&#xff0c;但是并没有影响业务&#xff0c;看了下日志&#xff0c;红框里面有循环调用了3次 &#xff0c;一直以为是外部的重试在重试&#xff0c;但是外部确没有重试记录&#xff0c;就深扒了代码 二、想法 我知道hikaricp获取连接之后会校验连接的有…

k8s 之安装metrics-server

作者&#xff1a;程序那点事儿 日期&#xff1a;2024/01/29 18:25 metrics-server可帮助我们查看pod的cpu和内存占用情况 kubectl top po nginx-deploy-56696fbb5-mzsgg # 报错&#xff0c;需要Metrics API 下载 Metrics 解决 wget https://github.com/kubernetes-sigs/metri…

系统架构设计师⑦:企业信息化战略与实施

系统架构设计师⑦&#xff1a;企业信息化战略与实施 信息的概念及特点 信息的定义&#xff1a; ①香农:信息就是不确定性的减少。 ②维纳:信息就是信息&#xff0c;既不是物质&#xff0c;也不是能量。 信息的特点&#xff1a; ①客观性(真伪性):也叫事实性&#xff0c;不符…

【最新华为OD机试E卷-支持在线评测】简单的自动曝光(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

神经网络激活函数列表大全及keras中的激活函数定义

一、概述 在机器学习中&#xff0c;激活函数是神经网络中的一种函数&#xff0c;用于在神经网络的每个神经元中引入非线性。没有激活函数&#xff0c;神经网络就无法学习复杂的模式&#xff0c;因为线性变换的组合仍然是线性的。 在神经网络的每层中&#xff0c;将该层所有输…

设计模式之装饰器模式(Decorator)

一、装饰器模式介绍 装饰模式(decorator pattern) 的原始定义是&#xff1a;动态的给一个对象添加一些额外的职责。 就扩展功能而言&#xff0c;装饰器模式提供了一种比使用子类更加灵活的替代方案。 在软件设计中&#xff0c;装饰器模式是一种用于替代继承的技术&#xff0c;它…

【颜色平衡树 / E】

题目 思路 DFS暴力 60分 代码 #include <bits/stdc.h> using namespace std; const int N 5010; const int M 5010; int h[N], e[M], ne[M], idx; int c[N], f; int ans; void add(int a, int b) // 添加一条边a->b {e[idx] b, ne[idx] h[a], h[a] idx ; } …

Linux防火墙-常用命令

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们经过上小章节讲了Linux的部分进阶命令&#xff0c;我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主&#x…

C语言—单链表

目录 一、链表的概念及结构 二、单链表实现 &#xff08;2.1&#xff09;基本结构定义 &#xff08;2.2&#xff09;申请节点 &#xff08;2.3&#xff09;打印函数 &#xff08;2.4&#xff09;头部插入删除\尾部插入删除 &#xff08;2.4.1&#xff09;尾部插入 &…

计算机毕业设计 基于Python的人事管理系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

spring揭秘26-springmvc06-springmvc注解驱动的web应用

文章目录 【README】【1】springmvc注解驱动web应用【1.1】springmvc注解驱动web应用的3个组件【1.2】springmvc注解驱动web应用代码实践 【2】springmvc常用注解【2.1】Controller注解&#xff08;标注处理器类&#xff09;【2.2】RequestMapping注解&#xff08;标注处理器类…

OpenAI董事会主席Bret Taylor的Agent公司Sierra:专注于赋能下一代企业用户体验

本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结&#xff0c;2小时视频&#xff0c;5分钟阅读&#xff0c;加速内容学习与传播。 视频来源 youtube: https://www.youtube.com/watch?vriWB5nPNZEM&t47s 大纲 介绍 欢迎与介绍 介绍Bret Taylor&#x…