力扣第267周周赛(下)

  • 题目
  • 思路与算法
  • 代码实现
  • 写在最后

题目

  1. 2075 解码斜向换位密码

  2. 2076.处理含限制条件的好友请求

思路与算法

  1. 第三题是一个比较简单的索引计算题,只需要将斜着放的字符先顺着找回来拼接起来,再做去空格处理,最后输出即可。用栈也行,用vector也行,用str也行,用str现成的函数操作起来比较方便。
  2. 并查集配合哈希表维护即可,比较复杂,只附代码。

代码实现

  1. 2075 解码斜向换位密码
class Solution {public:string decodeCiphertext(string encodedText, int rows) {// 总长度int len = encodedText.size();// 计算总列数cint c = len / rows;// 待拼接字符串初始化string org;// 遍历// 遍历每一列for (int k = 0; k < c; ++k) {// 每一行for (int i = 0, j = k; j != c && i != rows; ++j, ++i) {// 斜向拼接对应位置的字符即可org += encodedText[i * c + j];}}// 去除掉空格,int i = org.size() - 1;while(i >= 0 && org[i] == ' ')i--;// 从索引0开始往后取i个字符作为结果返回即可return org.substr(0,i + 1);}
};
  1. 2076.处理含限制条件的好友请求
class Solution {vector<int> parent;int root(int x) { return (parent[x] == -1 || parent[x] == x) ? x : root(parent[x]); };
public:vector<bool> friendRequests(int n, vector<vector<int>>& restrictions, vector<vector<int>>& requests) {vector<unordered_set<int>> friends(n);for (int i = 0; i < n; i++) {friends[i].insert(i);}vector<unordered_set<int>> enemies(n);for (auto& res : restrictions) {enemies[res[0]].insert(res[1]);enemies[res[1]].insert(res[0]);}  parent = vector<int>(n, -1);auto requests_size = requests.size();vector<bool> result(requests_size, true);for (int i = 0; i < requests_size; i++) {int x = root(requests[i][0]), y = root(requests[i][1]);if (x == y) continue;if (friends[x].size() < friends[y].size()) swap(x, y);[&]{for (auto people : friends[y]) {// 如果有一个`people`出现在`x`维护的仇人名单`enemies[x]`中if (enemies[x].count(people) != 0) {// 交朋友就失败了result[i] = false;// 立刻滚蛋(相当于goto匿名函数末尾)return;}}enemies[x].insert(enemies[y].begin(), enemies[y].end());friends[x].insert(friends[y].begin(), friends[y].end());parent[y] = x;}();}return result;}
};

写在最后

睡了睡了

20211130:力扣第267周周赛(下)相关推荐

  1. 20211118:力扣第267周周赛(上)

    力扣第267周周赛(上) 题目 思路与算法 代码实现 写在最后 题目 买票需要的时间 反转偶数长度组的节点 思路与算法 买票需要的时间 处理思路:直接进行模拟即可,找到位置k上的人需要买的票的数量,排 ...

  2. 20211202:力扣第268周周赛(下)

    力扣第268周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 区间内查询数字的频率 k 镜像数字的和 思路与算法 第三题直接map加二分即可,见代码 这个第四题看了大家的题解有直接打表的,这题 ...

  3. (补)20210623:力扣第246周周赛(下)

    力扣第246周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 统计子岛屿 查询差绝对值的最小值 思路与算法 统计子岛屿 : 老DFS了,总之就是遍历题,无需多言,搜就行了. 查询差绝对值的最小 ...

  4. 20210602:力扣第243周周赛(下)

    力扣第243周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 使用服务器处理任务 准时抵达会议现场的最小跳过休息次数 思路与算法 使用服务器处理任务:典型双堆问题,逻辑清晰即可写出代码,今天两 ...

  5. 20210427:力扣第238周周赛(下)

    力扣第238周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 所有元音按顺序排布的最长子字符串 最高建筑高度 思路与算法 依旧是滑动窗口,再熟悉滑动窗口的写法即可. 不加解释,本题参考零神专业 ...

  6. 20210424:力扣第237周周赛(下)

    力扣第237周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 单线程 CPU 所有数对按位与结果的异或和 思路与算法 第一题属于一类cpu流水线题目,实现常规方法堆加排序即可. 第二题属于数学 ...

  7. 20210218:力扣第228周周赛(下)

    力扣第228周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 袋子里最少数目的球 一个图中连通三元组的最小度数 思路与算法 经典二分搜索题目,套模板,主要搞清楚如何检查遍历的每一个数是否符合不 ...

  8. 20201016:力扣第210周周赛题解(下)

    力扣第210周周赛题解(下) 题目 思路与算法 代码实现 写在最后 题目 分割两个字符串得到回文串 统计子树中城市之间最大距离 思路与算法 第三题主要逻辑通顺就行,注意分割的索引是一样的,那么判断回文 ...

  9. 20210612:力扣第244周周赛题解(上)

    力扣第244周周赛(上) 题目 思路与算法 代码实现 写在最后 题目 判断矩阵经轮转后是否一致 使数组元素相等的减少操作次数 思路与算法 判断矩阵经轮转后是否一致:本题的前置题目是这道46:.旋转图像 ...

最新文章

  1. Java中final关键字如何使用?
  2. div固定大小文字溢出自动缩小_CSS样式更改——框模型、定位、浮动、溢出
  3. Android 10.0 PackageManagerService(一)工作原理及启动流程-[Android取经之路]
  4. python torch exp_Python:PyTorch 保存和加载训练过的网络 (八十)
  5. 候选JEP:记录和密封类型
  6. js :check 檢查
  7. eclipse把tomcant用到一个项目里_聊一个镜头工艺里容易被忽略,但很重要的项目...
  8. rhel6下,mysql 5.6.14 主从复制(也称mysql AB复制)环境配置[基于binlog]
  9. 如何搭建克隆系统服务器,FOG Project网络克隆系统安装和搭建
  10. XShell+XFtp无限制版本
  11. 【常用的办公软件】万彩办公大师教程丨文件批量压缩工具
  12. 管理经济学 知识点总结(一)
  13. 区块链会计案例_区块链会计行业 区块链会计应用案例
  14. jquery获取父元素下的第n个子元素
  15. JDBC-----什么是JDBC
  16. getopts函数简介
  17. python 行列式_python 中leastsq 中的雅可比行列式的作用是什么
  18. DHTML---HTML5
  19. 爬网页不用写代码?什么操作
  20. 计算机与农业机械化,计算机与农业机械化的相关性研究.pdf

热门文章

  1. 黑莓手机将停售;三大运营商:疫情防控期间用户欠费不停机;Chrome 测试移除搜索结果页网址 | 极客头条...
  2. 你抢的不是春节红包而是云!
  3. 物联网将如何影响你的钱包?
  4. 大数据时代已来,开发者该如何出击?
  5. 这位 GitHub 冠军项目背后的“老男人”,堪称 10 倍程序员本尊!
  6. AMD 证实停止向中国提供 x86 新技术授权!
  7. 开源项目的所有者去世了怎么办?
  8. 福利 | 闷骚的程序员是如何讲冷笑话的?
  9. 禁止“挖矿”!谷歌杀了所有的 Chrome 扩展应用
  10. 都说「跳一跳」是微信抄袭了育碧,万万没想到,他们在一起了!