๐Ÿ”Ž ์•Œ๊ณ ๋ฆฌ์ฆ˜-Leetcode ๋‘ ๊ฐœ์˜ ํ•ฉ (Two Sum) java

Kim Dae Hyunยท2021๋…„ 7์›” 20์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
1/29
post-thumbnail

๐Ÿ“Œ ๋ฌธ์ œ

n๊ฐœ์˜ ์ •์ˆ˜ ๋ฐฐ์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ๋ฐฐ์—ด์˜ ๋‘ ๊ฐœ ์›์†Œ์˜ ํ•ฉ์œผ๋กœ target ๊ฐ’์„ ๋งŒ์กฑํ•˜๋Š” ๋‘ ๊ฐœ ์›์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜์—ฌ๋ผ.
(์‹œ๊ฐ„๋ณต์žก๋„ O(N) ์ œํ•œ)

๐Ÿ“Œ ํ’€์ด

์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(N)์œผ๋กœ ์ œํ•œ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ฐœ for๋ฌธ์œผ๋กœ ๋‘ ๊ฐœ ์›์†Œ์˜ ๋ชจ๋“  ์กฐํ•ฉ์„ ๋ณด๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฐœ์˜ for๋ฌธ์œผ๋กœ ํ’€์–ด๋‚ด๊ธฐ ์œ„ํ•ด Map์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

class Solution {
    public int[] twoSum(int[] nums, int target) {
        
        Map<Integer, Integer> map = new HashMap<>();        
        for (int i=0;i<nums.length;i++) {
            if (!map.containsKey(nums[i])) {
                map.put(target-nums[i], i);
            } else {
                return new int[]{map.get(nums[i]), i};
            }
        }
        return new int[] {0,0}; 
    }
}

Map์— ์ €์žฅ๋˜๋Š” key๊ฐ’์€ target์—์„œ ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ๊ฐ’์„ ๋บ€ ๊ฐ’์„ ์ €์žฅ

๋งŒ์•ฝ Map์˜ ํ‚ค ๊ฐ’๊ณผ ๊ฐ™์€ ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ€ ๋“ค์–ด์˜จ๋‹ค๋ฉด ๊ทธ ๋‘ ๊ฐœ ์›์†Œ์˜ ํ•ฉ์ด target์ธ ๊ฒƒ.
(Map์˜ key๊ฐ’์€ ์ด๋ฏธ ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค ๋ฒˆ์งธ ๊ฐ’์„ ๋บ€ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ)

profile
์ข€ ๋” ์ฒœ์ฒœํžˆ ๊นŒ๋จน๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง

0๊ฐœ์˜ ๋Œ“๊ธ€