fromnothing1 2021. 10. 24. 15:40

https://leetcode.com/problems/two-sum/submissions/

 

Two Sum - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

#include<iostream>
#include <string>
#include <vector>
#include<algorithm>



using namespace std;


class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target)
    {
        vector<int> Tnums(nums);

        sort(nums.begin(), nums.end());
        vector<int> result;

        int lidx = 0;
        int ridx = nums.size() - 1;



        for (size_t i = 0; i < nums.size(); i++)
        {
            if (lidx == ridx)
            {
                result.push_back(-1);
            }
            else if (nums[lidx] + nums[ridx] < target)
            {
                lidx++;
            }
            else if (nums[lidx] + nums[ridx] > target)
            {
                ridx--;
            }
            else if (nums[lidx] + nums[ridx] == target)
            {
                result.push_back(nums[lidx]);
                result.push_back(nums[ridx]);

                break;
            }
        }

        if (find(Tnums.begin(), Tnums.end(), result[0]) == find(Tnums.begin(), Tnums.end(), result[1]))
        {
            auto it01 = find(Tnums.begin(), Tnums.end(), result[0]);
            auto it02 = next(it01);
            it02 = find(it02, Tnums.end(), result[0]);


            result[0] = distance(Tnums.begin(), it01);
            result[1] = distance(Tnums.begin(), it02);
        }
        else
        {
            result[0] = distance(Tnums.begin(), find(Tnums.begin(), Tnums.end(), result[0]));
            result[1] = distance(Tnums.begin(), find(Tnums.begin(), Tnums.end(), result[1]));
        }
        return result;

    }
};


int main()
{
    Solution a;    
    vector<int> b = { 3,3 };



    int target = 6;
    vector<int> d = a.twoSum(b,target );





    //for (size_t i = 0; i < d.size(); i++)
    //{
    //    cout << d[i] << endl;
    //}

    return 0;
}