[Algorithm] Leecode_ Two Sum

JAsmine_log·2024년 2월 24일

Algorithm

목록 보기
2/2

Problem

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Constraints:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
    Only one valid answer exists.

Follow-up: Can you come up with an algorithm that is less than O(n2) time complexity?

Analysis & Solution

  • 가장 간단하고 무난한 방법으로 for loop을 두번 사용하여, target과 동일한 값을 찾아서 index 리턴

if nums.size==5
i : 0, j: 0 1, 2, 3, 4
i : 1, j: 2, 3, 4
i : 2, j: 3, 4
i : 3, j: 4

Code

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

Tip

return 시, 배열인 {element1, element2, ...}의 형태로 리턴해야함

Reference

[1] https://medium.com/@AlexanderObregon/solving-the-two-sum-problem-on-leetcode-c-answer-s-walkthrough-0aa8b87875e9

profile
Everyday Research & Development

0개의 댓글