Skip to content

Commit 2993843

Browse files
committed
rivkode merge two sorted list
1 parent 53098d9 commit 2993843

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* public class ListNode {
4+
* int val;
5+
* ListNode next;
6+
* ListNode() {}
7+
* ListNode(int val) { this.val = val; }
8+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9+
* }
10+
*/
11+
/*
12+
1. ๋ฌธ์ œ ์ดํ•ด
13+
๋‘๊ฐœ์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋จธ์ง€ํ•œ๋‹ค
14+
์ด๋•Œ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•ฉ์น˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ 2๊ฐœ์˜ head๋ฅผ ๋น„๊ตํ•ด์„œ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒƒ์„ next๋กœ ๋ถ™์ด๋ฉด ๋œ๋‹ค
15+
16+
2. ์•Œ๊ณ ๋ฆฌ์ฆ˜
17+
while ์‚ฌ์šฉ, ์žฌ๊ท€
18+
19+
3. ์˜ˆ์™ธ ์ผ€์ด์Šค
20+
21+
๋‘˜์ค‘์— ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋จผ์ € null ์ด ๋˜๋ฒ„๋ฆฌ๋ฉด ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ๋„ ๋ถ™์—ฌ์ค˜์•ผ ํ•˜๋ฏ€๋กœ while ๋ฌธ์ด ๋๋‚œ ๋’ค์— ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค.
22+
23+
4. ๊ตฌํ˜„
24+
๊ฐ head๋ฅผ ๋น„๊ตํ•ด์„œ ๋” ์ž‘์€ ๊ฒƒ์„ head ๋กœ ๋‘๊ณ  ์ž‘์€๊ฒƒ์˜ next์™€ ๋‹ค๋ฅธ ๋ฆฌ์ŠคํŠธ์˜ head ๋ฅผ ๋‹ค์‹œ ๋น„๊ตํ•œ๋‹ค
25+
๋งŒ์•ฝ ๊ฐ™๋‹ค๋ฉด ๋‘˜์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค
26+
์•„๋‹ˆ๋‹ค
27+
์ด๋ ‡๊ฒŒ ์ˆœ์„œ๊ฐ€ ๋˜์–ด์•ผ ํ•˜์ง€ ์•Š์„๊นŒ
28+
#0 ๋ฆฌ์ŠคํŠธ1๊ณผ ๋ฆฌ์ŠคํŠธ2๊ฐ€ Null์ด ์•„๋‹Œ์ง€ ์ฒดํฌํ•œ๋‹ค Null ์ด๋ฉด head ๋ฐ˜ํ™˜.
29+
#1 ๋‘๊ฐœ์˜ ๋น„๊ตํ•  ๋…ธ๋“œ๋ฅผ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค
30+
#2 ๋‘๊ฐœ์˜ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค
31+
#3 ์ž‘์€ ๊ฐ’์„ ์ด์ „ Head์˜ Next๋กœ ์ •ํ•œ๋‹ค
32+
#4 ์ž‘์€ ๊ฐ’์˜ next๋ฅผ ๋‹ค์‹œ ๋น„๊ตํ•  ๋…ธ๋“œ๋กœ ์„ธํŒ…ํ•œ๋‹ค
33+
#5 2๋ฒˆ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ ๋ฐ˜๋ณตํ•œ๋‹ค
34+
35+
์ฆ‰ ๋น„๊ตํ•  ๋…ธ๋“œ๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ณ 
36+
๋น„๊ตํ•ด์„œ next๋กœ ๋„ฃ๊ณ 
37+
๋‹ค์‹œ ์ดˆ๊ธฐํ™” ํ•ด์„œ ๋น„๊ตํ•œ๋‹ค
38+
39+
์˜ˆ๋ฅผ ๋“ค์–ด
40+
1 - 2 - 3
41+
3 - 4 - 5
42+
์ผ ๊ฒฝ์šฐ
43+
1์ด ์ž‘์œผ๋ฏ€๋กœ 1์„ head ๋กœ ๋‘๊ณ 
44+
next๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด 1์˜ Next์™€ 3์„ ๋น„๊ตํ•œ๋‹ค
45+
1์˜ Next๊ฐ€ 2์ด๋ฏ€๋กœ 1์˜ next๋Š” 2๊ฐ€ ๋œ๋‹ค
46+
2์˜ Next์™€ 3์„ ๋‹ค์‹œ ๋น„๊ตํ•œ๋‹ค
47+
48+
๋‹ต์ง€๋ฅผ ๋ณด๋‹ˆ ์žฌ๊ท€๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ๊ณ  ๋‚ด๊ฐ€ ํ•œ ๋ฐฉ์‹์œผ๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ๋„ค.
49+
50+
๊ฐ€์žฅ ์•ž์— dummy๋ฅผ ๋‘์–ด์„œ head๋ฅผ ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•ด์•ผ๊ฒ ๋‹ค.
51+
*/
52+
class Solution {
53+
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
54+
ListNode dummy = new ListNode(-1);
55+
ListNode node = dummy;
56+
57+
while (list1 != null && list2 != null) {
58+
// ๊ฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์„ ๋น„๊ต
59+
if (list1.val < list2.val) {
60+
node.next = list1;
61+
list1 = list1.next;
62+
} else {
63+
node.next = list2;
64+
list2 = list2.next;
65+
}
66+
67+
// Node ์˜ ์ปค์„œ๋ฅผ ๋‹ค์Œ์œผ๋กœ ์ด๋™
68+
node = node.next;
69+
}
70+
71+
// ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์„ ํ˜„์žฌ Node ์˜ next๋ฅผ ๋ถ™์—ฌ์ฃผ๊ธฐ ์œ„ํ•จ
72+
node.next = l1 != null ? l1 : l2;
73+
74+
return dummy.next;
75+
}
76+
}

0 commit comments

Comments
ย (0)