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

2023-08-23力扣每日一题

链接:

1782. 统计点对的数目

题意:

给n个点和m条无向边(可重复),q个查询

定义edge[a]为一个点是a的边数量,定义ret[a,b]edge[a]+edge[b]-(a与b的边)

q个查询q个答案,第i次查询值val[i],求所有的1<=a<b<=n条件下有多少ret[a,b]>val[i]

解:

TLE卡47了

看了评论区用空间换时间,双指针

实际代码:

class Solution {
public:typedef pair<int,int> pii;
vector<int> countPairs(int n, vector<vector<int>>& edges, vector<int>& queries)
{vector<int>edgeNum(n+1);//记录edge[a]map<pii,int>edgePair;for(auto edge:edges){if(edge[0]>edge[1]) swap(edge[0],edge[1]);edgeNum[edge[0]]++;edgeNum[edge[1]]++;edgePair[{edge[0],edge[1]}]++;//记录(a与b的边)}vector<int>ans;	vector<int>edgeNS(edgeNum);	sort(edgeNS.begin(),edgeNS.end());//空间换时间 排序for(auto querie:queries){int temp=0;int left=1,right=n;while(left<right)//双指针 {if(edgeNS[left] + edgeNS[right] <= querie) left++;else{temp+= right-left;right--;}}for(auto Pair:edgePair){int s=edgeNum[Pair.first.first]+edgeNum[Pair.first.second];if(s>querie && s-Pair.second<=querie) temp--;}ans.push_back(temp);}return ans;
}
};

限制:

  • 2 <= n <= 2 * 104
  • 1 <= edges.length <= 105
  • 1 <= ui, vi <= n
  • ui != vi
  • 1 <= queries.length <= 20
  • 0 <= queries[j] < edges.length
http://www.lryc.cn/news/145274.html

相关文章:

  • 分发饼干【贪心算法】
  • 为什么网络互联地址设置为30位地址
  • 青少年棒球锦标赛发展·棒球1号位
  • Unity实现UI图片面板滚动播放效果第二弹
  • Redis的基本操作
  • 省级智慧农业大数据平台项目规划建设方案[195页Word]
  • php图片批量压缩并同时保持清晰度
  • 243:vue+Openlayers 更改鼠标滚轮缩放地图大小,每次缩放小一点
  • NOI2015D. 荷马史诗
  • 并法编程(集合类不安全)03详细讲解未补充
  • 软考:中级软件设计师:大数据
  • 【持续更新中】QAGroup1
  • redis应用 2:延时队列
  • ChatGPT AIGC 实现动态组合图的用法
  • 【网站】解压放松的治愈白噪音ASMR
  • 算法通过村第四关-栈白银笔记|括号问题
  • 基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 6 Data Transfers标签页介绍
  • HDLBits-Verilog学习记录 | Verilog Language-Vectors
  • 彻底搞懂 PHP 运算符 ?: 和 ??
  • 贝叶斯人工智能大脑与 ChatGPT
  • 适应高速率网络设备的-2.5G/5G/10G网络变压器/网络滤波器介绍
  • 「Redis」1. 数据类型的底层实现
  • Win11共享文件,能发现主机但无法访问,提示找不到网络路径
  • ROS中使用Navigation报错信息
  • three.js(六):自适应设备分辨率
  • Kubernetes对象深入学习之五:TypeMeta无效之谜
  • Gitlab设置中文
  • 【微服务部署】05-安全:强制HTTPS
  • Config:服务端连接Git配置
  • c++学习 之 类和对象 public , protected ,private