본문 바로가기
알고리즘/leetcode

Two Sum - easy

by 유이얼 2021. 8. 2.

https://leetcode.com/explore/challenge/card/august-leetcoding-challenge-2021/613/week-1-august-1st-august-7th/3836/

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int size = nums.size();
        map<int, int> m;
        
        for (int i = 0; i < size; ++i) {
            if (m[target - nums[i]] >= 1)
                return { i, m[target - nums[i]] - 1 };
            m[nums[i]] = i + 1;
        }
        return { 0, 1 };   
    }
};

 

// 0ms
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> cpy(nums.begin(), nums.end());
        sort(nums.begin(), nums.end());
        int i = 0, j = nums.size()-1;
        vector<int> res;
        while (i < j) {
            int s = nums[i]+nums[j];
            if (s == target) {
                res = {nums[i], nums[j]};
                cout << nums[i] << nums[j] << endl;
                break;
            }
            if (s < target) i++;
            else j--;
        }
        for (int i = 0; i < cpy.size(); i++) {
            if (res[0] == cpy[i]) {
                res[0] = i;
                break;
            }
        }
        for (int i = 0; i < cpy.size(); i++) {
            if (i != res[0] && res[1] == cpy[i]) {
                res[1] = i;
                break;
            }
        }
        return res;
    }
};

'알고리즘 > leetcode' 카테고리의 다른 글

120. Triangle  (0) 2022.07.22
Subsets II - medium  (0) 2021.08.04
Making A Large Island  (0) 2021.08.01
Map Sum Pairs  (0) 2021.07.31
Partition Array into Disjoint Intervals  (0) 2021.07.22