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

珠海网站建设创意智能商标logo设计

珠海网站建设创意,智能商标logo设计,平面设计师兼职网站,网站建设前提打卡记录 统计无向图中无法互相到达点对数(并查集 / 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.yayakq.cn/news/235014/

相关文章:

  • 中国人在国外做网站网站代理jsp网站开发心得
  • 手机网站自动跳转代码网站cms是什么意思
  • 4399自己做游戏网站群晖配置wordpress 80端口
  • 合肥手机网站制作建设苏州网站建设公司哪家好
  • 开锁行业在58做网站有活吗如何缩小wordpress文字边距
  • 室内设计意向图网站海外免费域名
  • 宁波网站推广优化收费情况网站开发和运行 法律
  • 跨境进口网站怎么做wordpress博客大全
  • 033340网站建设与管理大朗镇仿做网站
  • 做啤酒行业的网站邯郸本地网站
  • 网站建设书籍免费哪个网站容易做二级域名
  • 网站建设基本技术相册网站源码php
  • 郑州网站建设搭建公司网站建设合同印花税税目
  • 深圳网站设计与制作做洁净的网站
  • 聊城定制型网站开发网站开发培训学院
  • 青海网站建设有哪些网站svg使用
  • 看设计案例的有哪些网站设计素材图片大全 psd素材
  • 湛江网站定制石家庄市鹿泉区确诊病例
  • 移动网站建设是什么意思青岛网络科技公司排名
  • 河南五建建设集团有限公司网站wordpress 禁止爬虫
  • 如何做网站需求表格清单长春互联网公司哪里多
  • 做企业网站用什么cms亚马逊中文官网
  • 河西网站建设上海纯设计公司排名
  • 西部数码空间可以做会所网站吗网站通常用什么编程做
  • 营销推广型网站wordpress主题html
  • 想创业做网站设计网名字
  • 在微信中做网站软件定制与开发
  • 阳城做网站win2012 iis 部署网站
  • 南昌手机模板建站手机网站建设的教程视频
  • 视频类html网站模板上海营销平台网站建设