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

第19天(中等题 二分查找)

打卡第十九天
2道中等题

image

题目: 二分查找

image


思路:二分查找&前后加下标的方式省去了边界情况的讨论

不会做...好绕(重点标记一下这题 过两天回头再做一次)

image


代码:

class Solution {
public:vector<int> solveQueries(vector<int>& nums, vector<int>& queries) {unordered_map<int, vector<int>> indices;//哈希表,存储每个数值对应的所有下标for (int i = 0; i < nums.size(); i++) {indices[nums[i]].push_back(i);}//遍历数组,记录每个数值出现的所有位置int n = nums.size();for (auto& [_, p] : indices) {//处理每个数值对应的下标列表// 前后补加一个下标,满足循环数组int i0 = p[0];//第一个出现的下标p.insert(p.begin(), p.back() - n);// 在开头插入最后一个下标减去n(模拟前一个周期)p.push_back(i0 + n);// 在末尾插入第一个下标加上n(模拟下一个周期)}for (int& i : queries) {auto& p = indices[nums[i]];if (p.size() == 3) {//前后循环加本数组一共三次,说明这个数在一次完整数组中只出现一次i = -1;} else {int j = ranges::lower_bound(p, i) - p.begin();i = min(i - p[j - 1], p[j + 1] - i);//计算到左边相同数值和右边相同数值的最小距离}}return queries;}
};


题目:

image


思路:相向双指针&容斥原理
image
image


代码:

class Solution {
public:long long countFairPairs(vector<int>& nums, int lower, int upper) {ranges::sort(nums);//对数组排序auto count = [&](int upper) {//引用方式获取所有外部变量,可内部访问外部的nums数组,计算和小于等于某个值的数对数量,upper是上限值long long res = 0;int i = 0, j = nums.size() - 1;//双指针,i从左边开始,j从右边开始while (i < j) {if (nums[i] + nums[j] <= upper) {res += j - i;i++;} else {j--;}}return res;};return count(upper) - count(lower - 1);//count(upper):计算所有和 ≤ upper 的数对//count(lower-1):计算所有和 ≤ lower-1 的数对//两者相减得到和 ∈ [lower, upper] 的数对数量}
};

耗时≈一小时 明天继续

http://www.rkmt.cn/news/44195.html

相关文章:

  • cuda并行计算
  • 文件直链
  • 2025年11月投资纠纷律师评价榜:五强深度对比与数据解析
  • 2025年11月投资纠纷律师评价榜:陈杰带队五佳对比
  • 2025年11月工业洗地机厂家榜单:十强评测与性能对比
  • 2025年11月中国电线电缆厂家推荐榜:五强全维度评测
  • 2025年11月中国电线电缆厂家榜单:五强实测数据与选购要点
  • 2025年11月南昌搬家公司服务榜:五强对比评价帮你选
  • 2025年11月环保板材品牌榜单:十强横向评价让选材不再纠结
  • 2025年11月环保板材品牌排行:从ENF到高定全维度评测
  • 2025年11月狐臭产品推荐榜:用户实测好评率与三重修护机制解析
  • 2025年11月超声波清洗机厂家推荐榜:五家主流厂商性能与价格横向评测
  • 给大家推荐一个特别好的 F.Q 博客
  • 2025.11.8总结
  • 设备版本升级-华三
  • 跟着狂神学习Java基础打卡第二天
  • 安装Gradle超时java.net.SocketTimeoutException: Read timed out
  • 实用指南:神经网络常用激活函数公式
  • 20232322 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • 高级语言程序设计第四节个人作业
  • Vue3 项目首屏加载性能优化全攻略 - 详解
  • AtCoder Beginner Contest 431 ABCDEF 题目解析
  • 实用指南:AI学习日记——深度学习
  • 中科麒麟passwd弱密码授权
  • ubuntu22 arm64 安装docker乱七八糟的报错解决方案
  • AT_dwacon6th_prelims_e Span Covering
  • 拓扑 AC 2025 线上 NOIP 联测 #1
  • 详细介绍:Java数据结构 - 二叉树
  • Day 20
  • rustfs一键脚本配置方式