4 条题解

  • 0
    @ 2024-9-30 12:07:17

    可以对于每个数 aia_i,用一个 map 来记录他们出现过。那么只需要将所有数存进 map 后,对于每个数 aia_i,查询 ai+ka_i+k 是否存在即可。时间复杂度 Θ(nlogn)\Theta(n\log n)logn\log nmap 常数。

    #include <bits/stdc++.h>
    using namespace std;
    int a[100005];
    map<int,int> mp;
    int main() {
    	int n,k; cin >> n >> k; for(int i = 1;i <= n;i++) { cin >> a[i]; mp[a[i]]++; }
    	for(int i = 1;i <= n;i++) {
    		if(mp[a[i]+k]) {
    			cout << "Yes"; exit(0);
    		}
    	}
    	cout << "No\n";
    	return 0;
    }
    

    信息

    ID
    67
    时间
    3000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    385
    已通过
    244
    上传者