面试题 01.02. 判定是否互为字符重排

代码实现(排序)

class Solution {public:bool CheckPermutation(string s1, string s2) {sort(s1.begin(), s1.end());sort(s2.begin(), s2.end());return s1 == s2;}
};

2418. 按身高排序

代码实现(优先队列)

class Solution {public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {priority_queue<pair<int, string>> pq;for (int i = 0; i < names.size(); i++) {pq.push({heights[i], names[i]});}vector<string> ans;while (pq.size()) {auto [_, name] = pq.top();pq.pop();ans.push_back(name);}return ans;}
};

2419. 按位与最大的最长子数组

代码实现(贪心)

class Solution {public:int longestSubarray(vector<int>& nums) {int n = nums.size();int maxNum = *max_element(nums.begin(), nums.end());int maxLen = 0;for (int i = 0; i < n; i++) {if (nums[i] != maxNum) continue;int j = i + 1;int curLen = 1;while (j < n && nums[j] == nums[i]) {j++;curLen++;}maxLen = max(maxLen, curLen);i = j;}return maxLen;}
};

2420. 找到所有好下标

代码实现(前缀和)

class Solution {public:vector<int> goodIndices(vector<int>& nums, int k) {int n = nums.size();vector<int> increasingOrDecreasing(n);for (int i = 1; i < n; i++) {if (nums[i] == nums[i - 1]) increasingOrDecreasing[i] = 0;if (nums[i] < nums[i - 1]) increasingOrDecreasing[i] = -1;if (nums[i] > nums[i - 1]) increasingOrDecreasing[i] = 1;}vector<int> notIncreasing(n, 1);for (int i = 1; i < n; i++) {if (increasingOrDecreasing[i] <= 0) notIncreasing[i] += notIncreasing[i - 1];}vector<int> notDecreasing(n , 1);for (int i = 1; i < n; i++) {if (increasingOrDecreasing[i] >= 0) notDecreasing[i] += notDecreasing[i - 1];}vector<int> ans;for (int i = k; i < n - k; i++) {if (notIncreasing[i - 1] >= k && notDecreasing[i + k] >= k) {ans.push_back(i);}}return ans;}
};

2421. 好路径的数目

代码实现(并查集)

class Solution {public:int numberOfGoodPaths(vector<int> &vals, vector<vector<int>> &edges) {int n = vals.size();vector<vector<int>> g(n);for (auto &e : edges) {int x = e[0], y = e[1];g[x].push_back(y);g[y].push_back(x); // 建图}// 并查集模板// size[x] 表示节点值等于 vals[x] 的节点个数,如果按照节点值从小到大合并,size[x] 也是连通块内的等于最大节点值的节点个数int id[n], fa[n], size[n]; // id 后面排序用iota(id, id + n, 0);iota(fa, fa + n, 0);fill(size, size + n, 1);function<int(int)> find = [&](int x) -> int { return fa[x] == x ? x : fa[x] = find(fa[x]); };int ans = n;sort(id, id + n, [&](int i, int j) { return vals[i] < vals[j]; });for (int x : id) {int vx = vals[x], fx = find(x);for (int y : g[x]) {y = find(y);if (y == fx || vals[y] > vx) continue; // 只考虑最大节点值比 vx 小的连通块if (vals[y] == vx) { // 可以构成好路径ans += size[fx] * size[y]; // 乘法原理size[fx] += size[y]; // 统计连通块内节点值等于 vx 的节点个数}fa[y] = fx; // 把小的节点值合并到大的节点值上}}return ans;}
};

365天挑战LeetCode1000题——Day 097 神策专场: 判定是否互为字符重排 按身高排序 按位与最大的最长子数组 找到所有好下标 好路径的数目相关推荐

  1. 365天挑战LeetCode1000题——Day 081 统计子串中的唯一字符 地图分析 太平洋大西洋水流问题

    828. 统计子串中的唯一字符 按贡献值,也就是每个字符可能在多少个字符串中出现来进行计算,大大降低了复杂度 代码实现(部分看题解) class Solution {public:int unique ...

  2. 365天挑战LeetCode1000题——Day 126 单调栈模板 500题纪念

    用时126天,完成500题,平均4题/天,照这个速率,我还需要四个月完成1000题挑战. 单调栈模板 class Solution {public:vector<int> nextGrea ...

  3. 365天挑战LeetCode1000题——Day 260 800题

    时过但境还没迁,一晃眼过去了4个月,在同样的位置发了博客. 今天完成了第八百道题,然后距离我的365天千题计划,还剩下100天左右,每天再保持两题的刷题量,就能完成我一年前定下的目标了.这也再次证明了 ...

  4. 365天挑战LeetCode1000题——Day 014 每日一题 + 最长公共子序列

    文章目录 1. [我能赢吗](https://leetcode.cn/problems/can-i-win/) 1.1 记忆化搜索+DFS+位运算 2. [最长公共子序列](https://leetc ...

  5. 365天挑战LeetCode1000题——Day 012 每日一题

    文章目录 前言 1. [寻找右区间](https://leetcode.cn/problems/find-right-interval/) 1.1 二分查找 总结 前言 今天还是一题,但是重新学习了快 ...

  6. 365天挑战LeetCode1000题——Day 103 400题 检查二进制字符串字段 最大子序列交替和 最低票价 K 站中转内最便宜的航班

    400题,用时103天,平均3.88题/天,预计154天,也就是5个月后完成目标 1784. 检查二进制字符串字段 代码实现(模拟) class Solution {public:bool check ...

  7. 365天挑战LeetCode1000题——Day 124 单调队列模板

    单调队列模板 class MaxQueue {private:queue<int> origin;deque<int> dq; public:MaxQueue() {}int ...

  8. 365天挑战LeetCode1000题——Day 154 Knight

    154天,12次竞赛,573道题目,拿到了knight. 算是到了新的一个阶段吧,正好接下来四周应该都打不了了,因为周末有实验课. 每日一题 class Solution {public:int nu ...

  9. 365天挑战LeetCode1000题——Day 116 第315场周赛 「中国银联 力扣」

    6204. 与对应负数同时存在的最大正整数 代码实现 class Solution {public:int findMaxK(vector<int>& nums) {sort(nu ...

最新文章

  1. ios 设置属性的center_【从0到1的Stata图表学习1】图例设置
  2. Mysql执行计划查看
  3. @Modules( ... ) 多个包路径问题
  4. centos mysql5.6.35_centos6.8 mysql 5.6.35 glibc安装
  5. git常用命令与常见错误
  6. ZJOI 2008 瞭望塔 三分法
  7. python实战笔记之(4):刷博客浏览量
  8. facebook 注册邮箱
  9. 基于OpenSSL,实现SM2签名数据的ASN1编码转换
  10. 微信中打开app store连接
  11. RedisDesktopManager2022(resp-2022.0)安装失败的解决
  12. 在人工智能的角逐中,仿真数据是重要的平衡力量吗?
  13. github的ip地址经常变,可以在这里查询
  14. 大学生申请专利需要多少钱
  15. 基于ATR确定头寸的择时股票量化策略
  16. 笑傲江湖ol更新服务器正在维护,笑傲江湖ol更新了什么内容 笑傲江湖ol更新内容一览...
  17. opencv回顾之Core module
  18. 电子与通信工程专硕考分_2021年华北电力大学电子与通信工程专硕考研必看成功上岸前辈复习经验分享...
  19. nextTick 使用场景
  20. 如何查看windows某个目录下所有文件/文件夹的大小?(TreeSize Free)

热门文章

  1. 基于msp430G2553的低频方波频率、占空比、峰峰值测量函数
  2. 基于大尺寸图像的小目标检测竞赛经验总结
  3. 自动驾驶相关技术网址汇总
  4. 如何治疗脱发?植司泉助力头发新生!
  5. 零基础学编程套路~~~
  6. 可以放置Google Adsense广告的博客汇总
  7. 毕设题目:Matlab车道线检测
  8. shell条件测试操作
  9. 星淘惠:跨境电商行业发展逐渐完善,四大方向是跨境电商的未来
  10. 外贸网站空间的选择方法