哈希表写法
用到STL的unorded_set容器,比较陌生
还用到puts()函数,之前不知道这个
#include <iostream>
#include <algorithm>
#include <unordered_set>
using namespace std;
const int INF= 10000;
int n,m;
int main(){
scanf("%d %d",&n,&m);
unordered_set<int> hash;
int v1=INF,v2;
for(int i=0;i<n;i++){
int a,b;
scanf("%d", &a);
b = m-a;
if(hash.count(b)){
hash.insert(a);
if(a>b) swap(a, b);
if(a<v1) v1=a,v2=b;
}
else
hash.insert(a);
}
if(v1==INF) puts("No Solution");
//puts(s);其中s为字符串字符(字符串数组名或字符串指针)
else printf("%d %d",v1,v2);
}
双指针写法,感觉这代码也不怎么样
但让自己想或者写出来,就不会
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int n,m;
int w[N];
int main(){
scanf("%d %d",&n, &m);
for(int i=0;i<n;i++) scanf("%d",&w[i]);
sort(w, w+n);
for(int i=0, j=n-1; i<j; i++){
while(i<j && w[i]+w[j]>m) j--;
if(i<j && w[i]+w[j]==m){
printf("%d %d",w[i],w[j]);
return 0;
}
}
puts("No Solution");
}