【双指针】供暖器

改一下输入输出格式,输入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(a[l]-h[r]),如果r+1<=m && minn >= abs(a[l]-h[r+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;
}
相关推荐
电子_咸鱼5 小时前
LeetCode——Hot 100【电话号码的字母组合】
数据结构·算法·leetcode·链表·职场和发展·贪心算法·深度优先
仰泳的熊猫5 小时前
LeetCode:785. 判断二分图
数据结构·c++·算法·leetcode
rit84324995 小时前
基于MATLAB实现基于距离的离群点检测算法
人工智能·算法·matlab
my rainy days7 小时前
C++:友元
开发语言·c++·算法
haoly19897 小时前
数据结构和算法篇-归并排序的两个视角-迭代和递归
数据结构·算法·归并排序
微笑尅乐7 小时前
中点为根——力扣108.讲有序数组转换为二叉搜索树
算法·leetcode·职场和发展
im_AMBER8 小时前
算法笔记 05
笔记·算法·哈希算法
夏鹏今天学习了吗8 小时前
【LeetCode热题100(46/100)】从前序与中序遍历序列构造二叉树
算法·leetcode·职场和发展
吃着火锅x唱着歌8 小时前
LeetCode 2389.和有限的最长子序列
算法·leetcode·职场和发展
嶔某8 小时前
二叉树的前中后序遍历(迭代)
算法