2 条题解
-
1
除了用哈希表,还可以优化寻找的速度
#include<cstdio> #include<algorithm> using namespace std; int n,a[100110],x,ans,mid; int main() { scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&a[i]); } scanf("%d",&x); sort(a+1,a+n+1);//排序 for (int i=1;i<n;i++)//遍历a[i] { //二分查找x-a[i] int left=i+1,right=n;//确定左指针、右指针 while (left<=right) { mid=(left+right)/2; if (a[mid]>x-a[i]) { right=mid-1; } else { left=mid+1; } } if (right!=0&&a[right]+a[i]==x&&left!=i&&right!=i) { ans++; } } printf("%d",ans); return 0; }
信息
- ID
- 532
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 216
- 已通过
- 25
- 上传者