用python写一个程序:给定n个不同的整数,问这些数中有多少对整数
时间: 2023-05-21 14:02:16 浏览: 172
用python编写两个正整数的最大公约数和最小公倍数的小程序
可以使它们的和为k?
可以使用双指针法来解决这个问题,首先将这n个整数从小到大排序,然后使用两个指针i和j,分别指向数组的第一个和最后一个元素。如果a[i]+a[j]>k,则将j向左移动一位;如果a[i]+a[j]<k,则将i向右移动一位;如果a[i]+a[j]=k,则将i向右移动一位,将j向左移动一位,并将计数器加1。最后返回计数器的值即可。
以下是代码实现:
def count_pairs(arr, k):
arr.sort()
i, j = 0, len(arr) - 1
count = 0
while i < j:
if arr[i] + arr[j] > k:
j -= 1
elif arr[i] + arr[j] < k:
i += 1
else:
count += 1
i += 1
j -= 1
return count
arr = [1, 2, 3, 4, 5]
k = 6
print(count_pairs(arr, k)) # 输出2
注意:这个程序只适用于给定的整数数组中没有重复元素的情况。如果有重复元素,需要对程序进行修改。
阅读全文