穷举

给定排序数组arr和整数k,不重复打印arr中所有相加和为k的不降序二元组
例如, arr = [-8, -4, -3, 0, 1, 2, 4, 5, 8, 9], k = 10,打印结果为:
import sys
n,k=sys.stdin.readline().split()
line =(map(int, input().strip().split()))
line=sorted(list(set(line)))
k=int(k)
p1=0
p2=int(n)-1

while p1<p2:

    if line[p1]+line[p2]<k:
        p1+=1
        p2+=1
    elif line[p1]+line[p2]==k:
        print (line[p1],line[p2])
    p1 += 1
    p2-=1

在自己的编辑器上调试都能过,在牛客编辑器上报错,哎!

思路:首先对接收的数组进行排序,给定两个首尾指针,判断两个指针的值相加是否等于给定是数值,如果小于给定的数值,则首指针往前移动一位,而尾指针需要保持不动(保持不动的方式就是在小于k的判断中,让p1+=1 p2+=1)因为后面p2减少了一个 1,因为没注意到这个  调试了很久 发现不对,

加油!

posted @ 2020-05-23 17:08  谁谁是谁  阅读(469)  评论(0)    收藏  举报