标程数据有问题

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

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

现在是2020/02/27日,目前这道题标程的数据有问题,有个条件漏了,见下面

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n,k;
    cin >> n >> k;
    vector<int> a(n);
    for(int i=0;i<n;i++)
        cin >> a[i];
    if(n<3)
        return 0;
    for(int i=0;i<=n-3;i++) {
        // 注意外层循环也要跳过数字相同的情况
        if(i>0 && a[i]==a[i-1])
            continue;
        int left = i+1;
        int right = n-1;
        int k2 = k-a[i];
        while(left < right) { 
            if(a[left]+a[right] < k2)
                left++;
            else if(a[left]+a[right]>k2)
                right--;
            else {
                // 若要通过这题,需要把这里去掉left==i+1这个条件
                if(left==i+1 || a[left]!=a[left-1])
                    cout << a[i] << " " << a[left] << " " << a[right] << endl;
                left++;
                right--;
            }
        }
    }
    return 0;
}
全部评论
是否应该在输出之前检查二三是不是相等的 如果相等也不能算进去
点赞 回复 分享
发布于 2021-03-16 01:21
题目说了是严格升序的三元组,如果是不降序,就可以加上
点赞 回复 分享
发布于 2020-09-05 15:27

相关推荐

半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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