当前位置: 首页 > news >正文

苹果14pro max价格西安seo公司

苹果14pro max价格,西安seo公司,wordpress主题模板制作教程,织梦关闭网站打卡记录 统计无向图中无法互相到达点对数(并查集 / DFS) 链接 并查集 思路:用并查集将连通区域的连在一起,再遍历所有点,用hash表存储不同连通块的元素个数,然后 乘积和 便是答案。 注意: /…

打卡记录

在这里插入图片描述


统计无向图中无法互相到达点对数(并查集 / 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.dt0577.cn/news/20155.html

相关文章:

  • 衡水学校网站建设今日军事新闻最新消息新闻
  • 外国网站建设网站推广代理
  • 亚当学院网站视频建设教程软文营销文章300字
  • 西安做网站的公司有站长之家新网址
  • 世界500强企业排名(2022最新名单)上海哪家seo好
  • 手机web网站如何做好网站的推广工作
  • 哈尔滨网站建设报价营业推广的方式
  • 网站整站模板下载工具推手平台哪个靠谱
  • html5 微网站在线seo推广软件
  • 拥有域名后怎么建设网站北京最新疫情情况
  • 子域名查询工具seo 页面链接优化
  • 社工站建站流程搜狗站长平台验证不了
  • 企业网站的建立必要性今日最近的新闻大事10条
  • 成都微信小程序商城郑州seo优化顾问热狗
  • 松江专业做网站公司宁波seo深度优化平台
  • 网站建设新趋势买友情链接
  • 重庆南川网站制作公司电话seo网络推广教程
  • 手机模板网站模板免费下载网络广告创意
  • 网站seo工程师怎么做最有效的宣传方式
  • 自己怎么做网站模块网络公司网站模板
  • 电子邮箱网站注册网络广告营销方案
  • 门户网站制作网站策划是什么
  • 网站制作公司业务员做神马seo快速排名软件
  • 上海静安做网站多少钱宣传软文是什么意思
  • 大良营销网站建设平台seo运营是什么
  • 北京做网站推广的公司哪家建设公司网站
  • 官方网站建设项目询价中国互联网公司排名
  • 时尚网站网页设计青岛关键词优化平台
  • 北京b2c网站制作win10系统优化工具
  • 北京网站建设最便宜的公司哪家好千锋教育培训机构就业率