PS

leetcode) #1. Two sum

tose33 2021. 2. 18. 17:28

처음에 내가 제출한 코드.

#include <iostream>
#include <algorithm>

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

....느리다

 

 

빠른거 참고해서 다시 제출한 코드

#include <iostream>
#include <algorithm>

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

다른점은 루프돌면서 push_back 하지 않고, 그냥 바로 값을 리턴.

백준에서 풀때는 이런걸 신경안썼는데, 리트코드는 그래프로 런타임을 쫙 보여주니 신경쓰게 된다.

앞으로는 runtime 도 신경써가면서 연습하는 버릇을 들여야겠다.