题目A

https://leetcode-cn.com/problems/longest-nice-substring/
因为 length≤100length \leq 100length≤100,我们直接就可以遍历子串然后更新答案。

class Solution {public:bool Check(string s){unordered_set<int> m;for (auto u : s)m.insert(u);for (auto u : m){if (u >= 'a' && m.count(u - 32) < 1)    // 97 - 62 = 32return false;else if (u <= 'Z' && m.count(u + 32) < 1)return false;}return true;}string longestNiceSubstring(string s) {string ret = "";for (int i = 0; i < s.size(); i ++ ){for (int j = i + ret.size(); j < s.size(); j ++ ){if (Check(s.substr(i, j - i + 1))){ret = s.substr(i, j - i + 1);}}}return ret;}
};

题目B

https://leetcode-cn.com/problems/form-array-by-concatenating-subarrays-of-another-array/
因为 length≤1000length \leq 1000length≤1000,我们直接就可以直接 O(N2)O(N^2)O(N2)的复杂度就解决该问题。
直接对numsnumsnums数组遍历,遍历的同时审核是否可以凑出来 groupsgroupsgroups数组

class Solution {public:vector<vector<int> > gps;vector<int> nums;bool Check(int st, int x){for (int j = 0; j < gps[x].size(); j ++ ){if (st + j >= nums.size() || gps[x][j] != nums[st + j])return false;}return true;}bool canChoose(vector<vector<int>>& groups, vector<int>& _nums) {nums = _nums;gps = groups;int j = 0;for (int i = 0; i < nums.size(); i ++ ){if (Check(i, j)){if (j == gps.size() - 1)return true;i += gps[j].size() - 1; // 减去 1 是因为后面有 ++j ++;}}return false;}
};

题目C

https://leetcode-cn.com/problems/map-of-highest-peak/
直接就是一个 bfs 就可以了,主要越界情况,和**vector<vector >**的快速初始化


#define x first
#define y second
typedef pair<int, int> PII;
class Solution {public: int n, m;bool Check(int a, int b){return a >= 0 && b >= 0 && a < n && b < m;}vector<vector<int>> highestPeak(vector<vector<int>>& isWater) {n = isWater.size(), m = isWater[0].size();queue<PII> que;vector<vector<int> > ret(n, vector<int>(m, -1));for (int i = 0; i < n; i ++ )for (int j = 0; j < m; j ++ )if (isWater[i][j] == 1)que.push(PII(i, j)), ret[i][j] = 0;int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};PII tmp;    int x, y;while (que.size()){tmp = que.front();  que.pop();for (int i = 0; i < 4; i ++ ) {x = tmp.x + dx[i], y = tmp.y + dy[i];if (Check(x, y) && ret[x][y] == -1) {ret[x][y] = 1 + ret[tmp.x][tmp.y];que.push(PII(x, y));}}}return ret;}
};

题目D

https://leetcode-cn.com/problems/tree-of-coprimes/
有一个很玄学的问题,就是TMTMTM
vector copr[55];定义在全局变量那里就会超时,然而类的内部就很快,奇奇怪怪
对于本题的思路就是根据 nums 数字范围太小,我们可以将互质数字进行枚举是否在dfs的路径上。
dfs的路径就是我们根的路径,很方便

const int N = 100010, M = N * 2;
int h[N], e[M], ne[M], idx;
int pos[55];
int depth[N];class Solution {public:int n;vector<int> w;vector<int> ret;vector<int> copr[55];inline int gcd(int x, int y) {if (y == 0)return x;elsereturn gcd(y, x % y);}void add(int x, int y) {e[idx] = y, ne[idx] = h[x], h[x] = idx ++;}void dfs(int u, int fa) {int val = w[u];for (auto & x : copr[val])if (pos[x] != -1)if (ret[u] == -1 || depth[ret[u]] < depth[pos[x]])ret[u] = pos[x];int tmp = pos[val];pos[val] = u;int v;for (int i = h[u]; ~i; i = ne[i]) {v = e[i];if (v == fa)    continue;else {depth[v] = depth[u] + 1;dfs(v, u);}}pos[val] = tmp;}vector<int> getCoprimes(vector<int>& nums, vector<vector<int>>& edges) {for (int i = 1; i <= 50; i ++ )for (int j = 1; j <= 50; j ++ )if (gcd(i, j) == 1)copr[i].push_back(j);n = nums.size(), w = nums;memset(h, -1, sizeof h), idx = 0;memset(pos, -1, sizeof pos);memset(depth, 0, sizeof depth);for (auto & t : edges)add(t[0], t[1]), add(t[1], t[0]);ret.resize(n, -1);depth[0] = 0;dfs(0, -1);return ret;}
};

leetcode第 46 场双周赛相关推荐

  1. LeetCode第45场双周赛-解题报告

    LeetCode第45场双周赛-解题报告 A. 唯一元素的和 原题链接 https://leetcode-cn.com/problems/sum-of-unique-elements/ 解题思路 因为 ...

  2. Leetcode 第 69 场双周赛记录

    Leetcode 第 69 场双周赛记录 1.第一题 5960. 将标题首字母大写 难度:easy 给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母.请你按以 ...

  3. LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5177. 转变日期格式 easy 2. LeetCode 5445. 子数组和排序后的区间和 medium 3. LeetCode 54 ...

  4. LeetCode 第 31 场双周赛(273/2767,前9.87%,第3次全部通过)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5456. 在区间范围内统计奇数数目 easy 2. LeetCode 5457. 和为奇数的子数组数目 medium 3. LeetCo ...

  5. LeetCode 第 36 场双周赛(304/2204,前13.8%)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5515. 设计停车系统 easy 2. LeetCode 5516. 警告一小时内使用相同员工卡大于等于三次的人 medium 3. L ...

  6. LeetCode 第 35 场双周赛(216/2839,前7.61%)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5503. 所有奇数长度子数组的和 easy 2. LeetCode 5505. 所有排列中的最大和 medium 3. LeetCode ...

  7. LeetCode 第 34 场双周赛(385/2842,前13.5%)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5491. 矩阵对角线元素的和 easy 2. LeetCode 5492. 分割字符串的方案数 medium 3. LeetCode 5 ...

  8. LeetCode 第 33 场双周赛(511/3304,前15.5%,第4次全部通过)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5479. 千位分隔数 easy 2. LeetCode 5480. 可以到达所有点的最少点数目 medium 3. LeetCode 5 ...

  9. LeetCode 第 32 场双周赛(983/2957,前33.2%)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5468. 第 k 个缺失的正整数 easy 2. LeetCode 5469. K 次操作转变字符串 medium 3. LeetCod ...

最新文章

  1. 软件测试需要学习什么技术
  2. 【pmcaff】2014年最“脑洞大开”的新科技
  3. 设置DateChooser控件的头部文字对齐方式.
  4. phpStorm2018安装教程
  5. spark on yarn 使用自定义jdk
  6. TCP/IP 体系结构
  7. 白硕 | 基于区块链的众包社区激励机制
  8. 使用Python判断文件是否为PE文件
  9. Maven学习总结(49)——Maven Profile详解
  10. 初二生态系统思维导图_初中生物生态系统知识点思维导图
  11. 对我启发最大的数学学习方法
  12. 关于如何把支持VS2015的插件BabeLua改成支持VS2017
  13. windows XP虚拟机安装
  14. 普通住宅和非普通住宅税费
  15. Swagger 配置多个接口文档实现 和 实现多包扫描的配置方式
  16. 【AI绘画】二次元小姐姐生成!春节版!
  17. 程序员系列头像表情包一
  18. java switch基础介绍及具体使用方法
  19. 二代身份证读写器原理及开发
  20. Windows API CreateFile WriteFile 操作文件追加写入 解决中文乱码

热门文章

  1. 图表相同数据会自动合并问题(finereport)
  2. 从github上克隆hibernate项目
  3. 自动部署war包脚本
  4. Python 37 进程池与线程池 、 协程
  5. CCF 201712-3 Crontab
  6. 远程登录的几种方式对比
  7. RocketMQ实战(一)
  8. swift中为什么要创造出可选型?
  9. 转:VC中MessageBox的常见用法
  10. 根据XML更新Userprofile