https://leetcode.com/problems/two-sum/
난이도 : Easy
난이도 easy 문제로 문제를 보자마자 바로 브루트포스 방식으로 풀었습니다.
솔루션에는 시간복잡도가 O(n)으로 해쉬 맵을 활용한 인상적인 풀이가 있어서 공유합니다.
내 풀이
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] arr = new int[2];
for(int i=0; i<nums.length; i++){
for(int j=i+1; j<nums.length; j++){
if(nums[i] + nums[j] == target){
arr[0] = i;
arr[1] = j;
}
}
}
return arr;
}
}
시간복잡도 : O(n^2)
공간복잡도 : O(n)
Solution
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for(int i=0; i<nums.length; i++){
map.put(nums[i], i);
}
for(int i=0; i<nums.length; i++){
int complement = target - nums[i];
if(map.containsKey(complement) && map.get(complement) != i){
return new int[] {i, map.get(complement) };
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
시간복잡도 : O(n)
공간복잡도 : O(n)
'Leetcode 100문제 도전' 카테고리의 다른 글
[Leetcode 6/100] Same Tree - Easy (0) | 2020.08.25 |
---|---|
[Leetcode 5/100] Roman to Integer - Easy (1) | 2020.06.29 |
[Leetcode 4/100] Palindrome Number - Easy (1) | 2020.06.28 |
[Leetcode 3/100] Reverse Integer - Easy (1) | 2020.06.17 |
[Leetcode 2/100] Add Two Numbers - Medium (0) | 2020.06.16 |