dimanche 5 mai 2019

How to search in a Set of vectors of integers

I am trying to form a set of vectors of integers and on checking if the same solution already exists in the set, I am not getting correct answer.

This is in regards to C++11. I had posted a similar kind of query earlier as well but had not got any meaningful replies. Why is it that whenever we form a map or set of vectors, is is not able to recognize if I insert a vector which is identical to the one I have already inserted ? I have been searching for an answer since months. Also, since this behavior is allowed in other languages like Java, there must be a work around this. It would be great if someone can point out why this behavior isn't working the way I expect it to and what should be the probable solution to this.

The code below is a solution to 3Sum problem on Leetcode, but doesn't work because of exactly what I have explained above.

vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>>result;
        unordered_map<int,int>m;
        set<vector<int>>res;
        bool flag=false;

        if(nums.size()<=2)
            return result;
        vector<int>temp;

        for(int i=0;i<nums.size()-1;i++)
        {
            int comp=-(nums[i]+nums[i+1]);
            if(m.find(comp)!=m.end())
            {
                auto location=m.find(comp);
                temp.push_back(comp);
                temp.push_back(nums[i]);
                temp.push_back(nums[i+1]);

                for(int i=0;i<temp.size();i++)
                {
                if(res.find(temp)!=res.end())
                    flag=true;

                }

                if(flag==true)
                {
                    flag=false;
                }

                else
                result.push_back(temp);

                temp.clear();
            }

            else
            {
                m[nums[i]]=i+1;
                m[nums[i+1]]=i+2;
            }
        }
        return result;
    }

On giving input as [0,0,0,0] Answer should be: [0,0,0] Whereas I get : [[0,0,0], [0,0,0]]

Aucun commentaire:

Enregistrer un commentaire