leetcode 160. Intersection of Two Linked Lists ๋ฌธ์ ํ์ด.
๋ฌธ์ : ์๋ก ๋ค๋ฅธ ๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฒซ ๊ต์ฐจ์ ์ ์ฐพ์๋ผ.
Hash Set
1. A ๋ฆฌ์คํธ๋ฅผ ๋จผ์ ์ํํ๋ฉฐ hash set์ ๋ ธ๋๋ค์ ์ ์ฅํ๋ค.
2. B ๋ฆฌ์คํธ ์ํํ๋ฉฐ ๋ ธ๋๋ค์ด ์ด๋ฏธ hash set์ ์ ์ฅ๋์ด์๋์ง ํ์ธํ๋ค.
์ด๋ฏธ ์ ์ฅ๋์ด ์๋ค๋ฉด ํด๋น ๋ ธ๋๋ฅผ ๋ฐํํ๋ค.
3. ๋ฌด์ฌํ B๋ฆฌ์คํธ ์ํ๋ฅผ ๋ง์ง๋ง ๋ ธ๋๊น์ง ๋ง์ณค๋ค๋ฉด, ๊ต์ฐจ๋๋ ๋ ธ๋๊ฐ ์๋ค๋ ๋ป์ด๋ฏ๋ก null์ ๋ฐํํ๋ค.
Floyd's Tortoise and Hare algorithm
์ด ๋ฌธ์ ๋ํ ํ ๋ผ์ ๊ฑฐ๋ถ์ด ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ์ O(1)์ผ๋ก ์ค์ฌ์ค ์ ์๋ค.
Time Complexity: O(N)
Space Complexity: O(1)
1. A๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋ ธ๋๊ฐ B๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฅดํค๋๋กํ๋ค.
๋ง์ฝ ๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ๊ฐ ๊ต์ฐจ์ ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด A+B๋ฆฌ์คํธ๋ ์ฌ์ดํด์ ๊ฐ์ง๊ณ ์์ ๊ฒ.
2. ๊ฐ iteration๋ง๋ค ๊ฑฐ๋ถ์ดํฌ์ธํฐ๋ฅผ 1๋ฒ ํ ๋ผ ํฌ์ธํฐ๋ฅผ 2๋ฒ์ฉ ์์ง์ฌ ๊ต์ฐจ์ ์ ์ฐพ๋๋ค.
๊ต์ฐจ์ ์ด ์๋ค๋ฉด ํ ๋ผ ํฌ์ธํฐ๊ฐ null๊ฐ์ด ๋์ด ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์ค๊ฒ๋๋ค.
3. ๊ต์ฐจ๋๋ ๋ ธ๋๊ฐ ์๋ค๋ฉด A+B๋ฆฌ์คํธ์ ํค๋์ ์ฒซ ๊ต์ฐจ์ ์ ๊ฐ ๊ฐ์ ์๋๋ก ์ด๋์์ผ ์ฌ์ดํด์ด ์์๋๋ ๋ ธ๋๋ฅผ ์ฐพ๋๋ค. (๊ต์ฐจ๋๋ ๋ ธ๋๊ฐ ์๋ค๋ฉด ์ด ๋จ๊ณ๋ ์คํ๋์ง ์๋๋ค)
4. ๋ต์ ๋ฐํํ๊ธฐ ์ ์๋ A๋ฆฌ์คํธ์ ํ ์ผ ๋ ธ๋๊ฐ null์ ๊ฐ๋ฅดํค๋๋ก ์์ ํ๋ค.
(์กฐ์ํ ๋ถ๋ถ์ ์์๋ณต๊ตฌ ํ๋ ๊ฒ)