Day6力扣打卡

打卡记录

在这里插入图片描述


统计无向图中无法互相到达点对数(并查集 / DFS)

链接

并查集

思路:用并查集将连通区域的连在一起,再遍历所有点,用hash表存储不同连通块的元素个数,然后 乘积和 便是答案。

注意:

// 计算乘积和(妙)
long long ans = 0, total = 0;
for (auto [_, x] : hash) {ans += x * total;total += x;
}

class Solution {
public:long long countPairs(int n, vector<vector<int>>& edges) {vector<int> p(n);for (int i = 0; i < n; ++i) p[i] = i;function<int(int)> find = [&](int u) -> int {if (p[u] != u) p[u] = find(p[u]);return p[u];};for (auto& edge : edges) {int x = find(edge[0]), y = find(edge[1]);if (x != y) p[x] = y;}unordered_map<int, int> hash;for (int i = 0; i < n; ++i) {hash[find(i)]++;}long long ans = 0, total = 0;for (auto [_, x] : hash) {ans += x * total;total += x;}return ans;}
};

DFS

思路:搜寻每个连通块的元素个数,之后同理便可以计算出答案。

class Solution {
public:long long countPairs(int n, vector<vector<int>>& edges) {vector<int> g[n];for (auto& edge : edges) {int a = edge[0], b = edge[1];g[a].push_back(b);g[b].push_back(a);}vector<bool> st(n, false);function<int(int)> dfs = [&](int u) -> int {if (st[u]) return 0;int cnt = 1;st[u] = true;for (auto& e : g[u]) cnt += dfs(e);return cnt;};long long ans = 0, sum = 0;for (int i = 0; i < n; ++i) {int cnt = dfs(i);ans += sum * cnt;sum += cnt;}return ans;}
};

反转二叉树的奇数层(BFS[层序遍历] / DFS)

链接

BFS(层序遍历)

思路:在层序遍历使用 queue 的基础上,将奇数层的整层的节点按照从左到右的顺序全部存入新开的一个数组中,然后对数组中的所有值进行颠倒。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* reverseOddLevels(TreeNode* root) {queue<TreeNode*> q;q.push(root);bool flag = false;while (!q.empty()) {vector<TreeNode*> t;while (!q.empty()) {t.push_back(q.front());q.pop();}if (flag) {for (int i = 0, j = t.size() - 1; i < j; ++i, --j)swap(t[i]->val, t[j]->val);}flag = !flag;for (auto u : t) {if (u->left) q.push(u->left);if (u->right) q.push(u->right);}}return root;}
};

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

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

相关文章

计算机视觉基础(5)——特征点及其描述子

前言 本文我们将学习到特征点及其描述子。在特征点检测中&#xff0c;我们将学习角点检测和SIFT关键点检测器&#xff0c;角点检测以哈里斯角点检测器为例进行说明&#xff0c;SIFT将从高斯拉普拉斯算子和高斯差分算子展开。在描述子部分&#xff0c;我们将分别学习SIFT描述子和…

水库大坝安全监测方案,筑牢水库安全防线!

方案背景 党的十九届五中全会提出&#xff1a;“统筹发展和安全、加快病险水库除险加固”&#xff1b;国务院常务会议明确“十四五”期间&#xff0c;水库除险加固和运行管护要消除存量隐患&#xff0c;实现常态化管理&#xff1b;到2025年前&#xff0c;完成新出现病险水库的…

UVM-什么是UVM方法学

概念简介 百度对UVM的解释如下&#xff1a; 通用验证方法学&#xff08;Universal Verification Methodology, UVM&#xff09;是一个以SystemVerilog类库为主体的验证平台开发框架&#xff0c;验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境 UVM…

我国跨境电商行业研究报告(2022)

我国跨境电商行业研究报告 我国跨境电商规模突飞猛进&#xff0c;2022年进出口规模超2万亿元&#xff0c;2023年上半年跨境电商出口8210亿元&#xff0c;增长19.9%。全国跨境电商主体已超10万家&#xff0c;近年来涌现出一批上市公司&#xff0c;以及广州希音等全球独角兽企业。…

【了解一下,Elastic Search的检索】

文章目录 **1.1.ES**1.1.1.elasticsearch的作用**1.1.2.ELK栈****2.索引库操作****2.1.mapping映射属性****2.2.索引库的CRUD** **3. 文档操作** **基于IDEA操作ES****索引操作****文档操作** DSL查询文档**1.1.DSL查询分类****1.2. 全文检索查询****1.3. 精准查询****1.4. 地理…

淘宝商品详情API接口(标题|主图|SKU|价格|销量|库存..)

一、应用场景 淘宝商品详情接口的应用场景非常广泛&#xff0c;以下是其中几个例子&#xff1a; 商家用于展示商品信息&#xff1a;淘宝详情接口可以被用于商家的自主店铺或第三方电商平台上&#xff0c;方便展示商品详细信息。 商品价格比对&#xff1a;淘宝详情接口可以用于…

2.4 如何在FlinkSQL使用DataGen(数据生成器)

1、DataGen SQL 连接器 FLinkSQL中可以使用内置的DataGen SQL 连接器来生成测试数据 官网链接&#xff1a;DataGen SQL 连接器 2、随机数数据生成器 随机数数据生成器支持随机生成 char、varchar、binary、varbinary、string 类型的数据 它是一个无界流的数据生成器 -- TO…

VSCode使用记录

一、安装 从官网 https://code.visualstudio.com 下载相应安装包 二、扩展&#xff1a;商店 Chinese (Simplified) (简体中文) Language Pack for Visual Studio CodeLive Serveropen in browserGitLens — Git superchargedRemote - SSHPrettier - Code formatterESLintpxt…

10个最流行的土木工程BIM软件

建筑信息模型 (BIM) 是一种数字化流程&#xff0c;最近在土木工程领域受到广泛关注。 它是一种设计、构建和管理项目的协作方法。 它涉及创建和使用建筑物的详细数字表示&#xff0c;包括 3D 模型、数据和有关项目的信息。 BIM 在参与项目的不同利益相关者之间提供实时协作&…

H5随机短视频滑动版带打赏源码,可封装APP软件或嵌入式观看

H5随机短视频滑动版带打赏源码&#xff0c;可封装APP软件或嵌入式观看&#xff0c;网站引流必备源码&#xff01; 数据来源抖音和快手官方短视频链接&#xff0c;无任何违规内容&#xff01;可自行添加广告等等&#xff01; 手机端完美支持滑动屏幕观看&#xff08;向上或向右…

UVM 验证方法学之interface学习系列文章(八)《interface不小心引入X态问题》

前面的文章学习,想必大家都对interface 有了深入了解。大家可不要骄傲哦,俗话说:小心驶得万年船。今天,再给大家介绍一个工作中,不是经常遇到,但是一旦遇到,会让你纠结很久的事情。 前面文章提到,随着验证复杂度的不断增加,interface 的bind 的操作,是必不可少的用法…

Git Bash(一)Windows下安装及使用

目录 一、简介1.1 什么是Git&#xff1f;1.2 Git 的主要特点1.3 什么是 Git Bash&#xff1f; 二、下载三、安装3.1 同意协议3.2 选择安装位置3.3 其他配置&#xff08;【Next】 即可&#xff09;3.4 安装完毕3.5 打开 Git Bash 官网地址&#xff1a; https://www.git-scm.com/…

【论文解读】The Power of Scale for Parameter-Efficient Prompt Tuning

一.介绍 1.1 promote tuning 和 prefix tuning 的关系 “前缀调优”的简化版 1.2 大致实现 冻结了整个预训练模型&#xff0c;并且只允许每个下游任务附加k个可调令牌到输入文本。这种“软提示”是端到端训练的&#xff0c;可以压缩来自完整标记数据集的信号&#xff0c;使…

修改ConsoleApplication17_2项目实现oss上线

首先创建号oss&#xff0c;上传文件&#xff0c;复制临时链接 木马内写 可以看到能成功上线但是有个问题就是占用cpu大小为9%左右&#xff0c;这里我用的是腾讯云oss实现的&#xff0c;用阿里云oss实现也是9%左右 我再次进行url的aes加密 还是百分之9左右&#xff0c; 这里…

nfs+rpcbind实现服务器之间的文件共享

NFS简介 NFS服务及Network File System&#xff0c;用于在网络上共享存储&#xff0c;分为2,3,4三个版本&#xff0c;最新为4.1版本。NFS基于RPC协议&#xff0c;RPC为Remote Procedure Call的简写。 应用场景&#xff1a;用于A,B,C三台机器上需要保证被访问到的文件是一样…

Hadoop之HDFS

目录 1.HDFS概述 1.1HDFS产出背景及定义 1.2 HDFS优缺点 1.3 HDFS组成架构 1.4 HDFS文件块大小 2. HDFS的Shell操作 2.1 基本语法 2.2 命令大全 2.3 常用命令实操 2.3.1 准备工作 2.3.2 上传 2.3.3 下载 2.3.4 HDFS直接操作 3. HDFS的API操作 3.1 客户端环境准备…

maven聚合和继承

一、什么是maven的聚合和继承&why 随着技术飞速发展&#xff0c;各类用户对软件的要求越来越高&#xff0c;软件也变得越来越复杂。 软件设计人员往往会采用各种方式对软件划分模块&#xff0c;已得到更加清晰的设计及更高的复用性。 当把Maven应用到实际项目中的时候&am…

使用CDN构建读取缓存设计

在构建需要高吞吐量和最小响应时间的系统的API时&#xff0c;缓存几乎是不可避免的。每个在分布式系统上工作的开发人员都曾在某个时候使用过某种缓存机制。在本文中&#xff0c;我们将探讨如何使用CDN构建读取缓存设计&#xff0c;不仅可以优化您的API&#xff0c;还可以降低基…

6.5 Elasticsearch(五)Spring Data Elasticsearch - 增删改查API

文章目录 1.Spring Data Elasticsearch2.案例准备2.1 在 Elasticsearch 中创建 students 索引2.2 案例测试说明 3.创建项目3.1 新建工程3.2 新建 springboot module&#xff0c;添加 spring data elasticsearch 依赖3.3 pom.xml 文件3.4 application.yml 配置 4.Student 实体类…

如何更改eclipse的JDK版本

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、有时候导入一些网上的资源需要更换JDK二、使用步骤1. 总结 一、有时候导入一些网上的资源需要更换JDK 具体操作如下 二、使用步骤 1. 在eclipse上方工具栏找…