문제 

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] Output: 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 <= 10^4
  • -10^9 <= nums[i] <= 10^9
  • -10^9 <= target <= 10^9
  • Only one valid answer exists.

 

 

코드

public class Solution {
    public int[] TwoSum(int[] nums, int target) {
        for(int i=0; i<nums.Length; i++) {
            int index = Array.IndexOf(nums, target-nums[i]);
            if(index != -1 && i != index) {
                int[] answer = {i, index};
                return answer;
            }
        }
        return null;
    }
}

 

설명:

입력받은 nums 배열을 돌면서 target-nums[i]값이 nums 배열에 있는지 확인한다. 

하지만 만약 target이 6이고 nums[i]가 3인 경우에 IndexOf를 사용하게 되면 자기 자신의 인덱스인 i를 반환하기 때문에 같은 element를 두번 사용하지 말라는 조건을 어기게 된다.

그렇기 때문에 i != index 라는 조건을 추가했다. 

 

 

 

+ Recent posts