λ¬Έμ νμ
μ μ λ°°μ΄ nums
κ° μ£Όμ΄μ§λ€.
λ°°μ΄μ λ μμλ₯Ό λνμ λ, target
μ΄ λλ κ°μ μΈλ±μ€λ₯Ό λ°νν΄μΌνλ€.
λ΅μ μ νν 1κ° μ‘΄μ¬νλ€.
νμ΄
1οΈβ£ HashMap μ μ΄μ©ν νμ΄
π‘ λ μ€λ₯Έ Idea
κ° κ°μkey
λ‘, μΈλ±μ€ κ°μvalue
λ‘ μ μ₯νλmap
μ μ μνλ€.nums
λ°°μ΄μ μννλ©΄μtarget-nums[i]
κ°map
μ μ‘΄μ¬νλμ§ νμΈνκ³ , μ‘΄μ¬νλ€λ©΄ λ΅μΌλ‘ λ°ννλ€.
import java.util.*;
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer,Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++){
int search = target-nums[i];
if(map.containsKey(search)){
return new int[]{i,map.get(search)};
}
map.put(nums[i],i);
}
return new int[]{};
}
}
κ²°κ³Ό
2οΈβ£ ν¬ ν¬μΈν° νμ΄
π‘ λ μ€λ₯Έ Idea
https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/?envType=study-plan-v2&envId=top-interview-150
μμ μ μ΄ λ¬Έμ μ μ μ¬ν λ¬Έμ λ₯Ό νμλ κ²½νμ΄ μμλ€.
ν¬ ν¬μΈν° λ°©μμΌλ‘, λνμ λ ν©μ΄target
μ΄ λλ μμΉλ₯Ό νμνλ€.
λ¨, μ΄ λ¬Έμ μμ μꡬνλ μΈλ±μ€λ μ λ ¬νκΈ° μ μΈλ±μ€μ΄λ―λ‘
μ λ ¬νκΈ° μ μΈλ±μ€λ₯Ό 보κ΄νκΈ° μν΄ λ°°μ΄λ‘ κ°κ³Ό μΈλ±μ€λ₯Ό 보κ΄νμ¬, μ λ΅ μ μΆ μ λ°ννμλ€.
class Solution {
public int[] twoSum(int[] nums, int target) {
int N = nums.length;
int[][] nodes = new int[N][2];
for (int i = 0; i < N; i++) {
nodes[i] = new int[]{nums[i], i};
}
Arrays.sort(nodes, (a, b) -> a[0] - b[0]);
int left = 0, right = nodes.length - 1;
while (left < right) {
int sum = nodes[left][0] + nodes[right][0];
if (sum < target) {
left++;
} else if (sum > target) {
right--;
} else {
break;
}
}
return new int[]{nodes[left][1], nodes[right][1]};
}
}
κ²°κ³Ό
μ΄ λ¬Έμ μμ μꡬνλ κ²μ, Hash λ°©μ μ΄μκΈ° λλ¬Έμ μλλ λ§μ΄ λλ €μ‘λ€.
π νκ³
μ΄ λ¬Έμ λ₯Ό μ΄μ μ νμμλλ°, Hashλ₯Ό μ΄μ©ν΄μ ν μκ°μ λΉμμ νμ§ λͺ»νμλ€.
κ·Έλμ λ€μ μ΄λ² λ¬Έμ μ κ°μ, Hash λ°©μμΌλ‘ νμ΄λ³΄λ ν΅κ³Όλ νμλ€.
λΉμμλ λͺ°λμ§λ§, μ΄μ λΆν°λΌλ μ΄λ° λ¬Έμ μμ μ¬λ¬ μ κ·Όλ²μ΄ μλ€λ κ²μ μκ² λμμΌλ μ κΈ°μ΅νκ³ μμ΄μΌκ² λ€.