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;
}
'공부,일 > 코딩테스트' 카테고리의 다른 글
탐욕법 (0) | 2021.11.04 |
---|---|
전화번호 목록 (0) | 2021.10.24 |
코딩 테스트 사이트 모음 (0) | 2021.10.18 |
1 만들기(Dynamic Programming ) (0) | 2021.10.17 |
카카오톡 신입 공채 (0) | 2021.08.20 |
댓글