【双指针】供暖器

改一下输入输出格式,输入n,m,表示n个房屋,m个供暖器,接下来输入n个整数和m个整数。输出一个整数,表示最小的供暖半径。

1 变量定义

1)a数组:存储房屋的位置

2)h数组:存储供暖器的位置

3)l变量:停留在a数组

4)r变量:停留在h数组

5)minn变量:定义为房屋到供暖器的最小距离

6) ans变量:定义为找到的最小半径

2 算法流程

l遍历a数组的元素,初始化minn=abs(al-hr),如果r+1<=m && minn >= abs(al-hr+1),则更新minn,r++。最好通过max(minn,ans)找到最终的ans。

3代码实现

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int l,r,n,m;
int a[100005],h[100005];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=m;i++) cin>>h[i];
	sort(a+1,a+n+1);
	sort(h+1,h+m+1); 
	l=1;
	r=1;
	int ans=0;
	for(int i=1;i<=n;i++){
		l=i;
		int minn=abs(h[r]-a[l]);
		while(r+1<=m&&abs(h[r+1]-a[l])<=minn){
			minn=abs(h[r+1]-a[l]);
			r++;
		} 
		ans=max(ans,minn);
	} 
	cout<<ans;
    return 0;
}
相关推荐
All for pursuit.18 分钟前
【栈-5】84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
wzdark24 分钟前
数据压缩算法的时间复杂度与压缩率权衡4
算法
小陈phd42 分钟前
深入理解agent学习笔记(一)——现代agent介绍
人工智能·算法
晴天的雨.9924 小时前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
aramae10 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
荆棘鸟智能11 小时前
城市感知设备怎么统一接入?从多协议网关到设备模型的中间件架构设计
人工智能·算法·边缘计算
INGNIGHT15 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法
2401_8390805415 小时前
C++常见八股
数据结构·c++·算法
青山是哪个青山16 小时前
LeetCode 188:买卖股票的最佳时机 IV
算法
mikuyyds16 小时前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis