题解 | #不重复打印排序数组中相加和为给定值的所有三元组#

不重复打印排序数组中相加和为给定值的所有三元组

http://www.nowcoder.com/practice/11b7dd7cbf064900bc664bb5fd4e2fab

n, k = map(int, input().split())
arr = list(map(int, input().split()))
for i in range(n - 2):
    if i != 0 and arr[i] == arr[i - 1]:
        continue
    target = k - arr[i]
    second, third = i + 1, n - 1
    while second < third:
        if (second != i + 1 and arr[second] == arr[second - 1]):
            second += 1
            continue
        if arr[second] == arr[i] or arr[second] == arr[third]:
            second += 1
            continue
        su = arr[second] + arr[third]
        if su == target:
            print(arr[i], arr[second], arr[third])
            second += 1
        elif su > target:
            third -= 1
        else:
            second += 1
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务