我是靠谱客的博主 凶狠皮卡丘,最近开发中收集的这篇文章主要介绍查找和为0的三个数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给定一个整形数组,要求找出其中和为0的三个数的组合。比如:-1, 0, 1, 2, -1, -4, 则组合有{-1, -1, 2}和{-1, 0, 1}。要求结果中不能有重复,比如{-1, 2, -1}和{-1, -1, 2}重复。

#include <string>
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;

set<vector<int> > find_triplets(vector<int> arr)
{
    sort(arr.begin(), arr.end());
    set<vector<int> > result;
    vector<int> value(3);

    int n = arr.size();
    for (int i = 0; i < n; i++)
    {
        int j = i+1;
        int k = n-1;
        while (j < k)
        {
            int sum = arr[i] + arr[j] + arr[k];
            if (sum < 0)
            {
                j++;
            }
            else if (sum > 0)
            {
                k--;
            }
            else
            {
                value[0] = arr[i];
                value[1] = arr[j];
                value[2] = arr[k];
                result.insert(value);
                j++;
                k--;
            }
        }
    }

    return result;
}


最后

以上就是凶狠皮卡丘为你收集整理的查找和为0的三个数的全部内容,希望文章能够帮你解决查找和为0的三个数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部