zoukankan      html  css  js  c++  java
  • 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。

    给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
    注意:答案中不可以包含重复的三元组。
    例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
    满足要求的三元组集合为:
    [
      [-1, 0, 1],
      [-1, -1, 2]
    ]

    #include <stdio.h>
    void BubbleSort(int a[],int n){
        int i,j,tmp;
        bool flag;
        for(i=1;i<n;i++){
            flag=false;
            for(j=0;j<n-1;j++){
                if(a[j]>a[j+1]){
                    tmp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=tmp;
                    flag=true;
                }
            }
            if(!flag){
                break;
            }
        }
    }
    int main()
    {
        int n,i,j,k;
        scanf("%d",&n);
        int nums[n];
        for(i=0;i<n;i++){
            scanf("%d",&nums[i]);
        }
        BubbleSort(nums,n);
        for(i=0;i<n;i++){
            printf("%d ",nums[i]);
        }
        printf("
    ");
        for(i=0;i<n;i++){
            if(nums[i]==nums[i-1]){// 该处为关键点(去重):判断当前的数是否与前一个相等.
                continue;// 若相等则说明从该数开始的所有可能性已经输出,则跳过该数
            }else{
                for(j=i+1;j<n;j++){
                    for(k=j+1;k<n;k++){
                        if(nums[i]+nums[j]+nums[k]==0)
                            printf("%d,%d,%d ",nums[i],nums[j],nums[k]);
                    }
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    转载——rdis安装yum版本
    Lc28_strStr kmp字符串匹配
    关于 哈希的总结
    Lc344_反转字符串
    Lc383_赎金信
    Lc454_四数相加 II
    Lc1_俩数之和
    推荐4款个人珍藏的IDEA插件!帮你写出不那么差的代码
    ZUC-生成随机序列
    移位运算
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/11934670.html
Copyright © 2011-2022 走看看