sort(dis, dis + num);
int i = 0, j = num - 1;
while (i < j) //经典
{
while (dis[i] + dis[j] > k && i < j) j--;
ret += j-i;
i++;
}
首先将数组按升序排序
固定i后求出a[i]+a[j]不超过k的组数,这时增大i,a[i]也增大了,所以j不可能也增大(要求 和不超过k),
因此从当前位置的j继续向前找,直到a[i]+a[j]<=k为止。
如果i==j,则退出循环。