Remove Duplicates from Sorted List
์ด ๋ฌธ์ ๋ ์ ๋ ฌ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ์ค๋ณต๋ ๊ฐ์ ์ ๊ฑฐํ๋ ๋ฌธ์ ๋ก, ํ ๋ฒ์ ์ํ๋ก ํด๊ฒฐํ ์ ์์.
ํด๊ฒฐ ๋ฐฉ๋ฒ(ํฌ ํฌ์ธํฐ)
ํ์ฌ ๋ ธ๋(curr) ์ ๋ค์ ๋ ธ๋(curr.next) ๋ฅผ ๋น๊ต
๋ง์ฝ
curr.val == curr.next.val
์ด๋ฉด,curr.next
๋ฅผ ๊ฑด๋๋ฐ์ด ์ค๋ณต์ ์ ๊ฑฐ์ค๋ณต์ด ์๋๋ผ๋ฉด
curr
์ ๋ค์ ๋ ธ๋๋ก ์ด๋
์์์ฒ์ผ๋ก ๋ฆฌ์คํธ ๋๊น์ง ๋ฐ๋ณต ํ๋ฉด์ ์ค๋ณต์ ์ ๊ฑฐ
โ์๊ฐ ๋ณต์ก๋ : O(N)
๐๊ณต๊ฐ ๋ณต์ก๋ : O(1)
(์ถ๊ฐ ๊ณต๊ฐ ์์ด ์๋ณธ ๋ฆฌ์คํธ ์์ )
โ
Java ์ฝ๋
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null) return null;
ListNode curr = head; // ํ์ฌ ๋
ธ๋ ํฌ์ธํฐ
while(curr.next != null) { // ๋ฆฌ์คํธ ์ํ
if(curr.val == curr.next.val) {
curr.next = curr.next.next; // ์ค๋ณต์ด๋ฉด ๊ฑด๋๋ฐ๊ธฐ
} else {
curr = curr.next; // ์ค๋ณต์ด ์๋๋ฉด ๋ค์ ๋
ธ๋๋ก ์ด๋
}
}
return head; // ์ค๋ณต ์ ๊ฑฐ๋ ๋ฆฌ์คํธ ๋ฐํ
}
//ํ
์คํธ์ฉ ๋ฉ์๋ (๋ฐฐ์ด => LinkedList ๋ณํ)
public static ListNode createLinkedList(int[] values) {
if(values.length == 0) return null;
ListNode head = new ListNode(values[0]);
ListNode curr = head;
for(int i = 1; i < values.length; i++) {
curr.next = new ListNode(values[i]);
curr = curr.next;
}
return head;
}
//์ถ๋ ฅ ๋ฉ์๋
public static void printLinkedList(ListNode head) {
ListNode curr = head;
while(curr != null) {
System.out.println(curr.val + " ");
curr = curr.next;
}
System.out.println();
}
public static void main(String[] args) {
Soultion solution = new Solution();
ListNode head1 = createLinkedList(new int[]{1,1,2});
ListNode result1 = solution.deleteDuplicates(head1);
printLinkedList(result1); // result : 1 2
ListNode head2 = createLinkedList(new int[]{1,1,2,3,3});
ListNode result2 = solution.deleteDuplicates(head2);
printLinkedList(result2); // result : 1 2 3
}
}
๐์ฝ๋ ์ค๋ช
deleteDuplicates(ListNode head)
ํ์ฌ ๋ ธ๋(
curr
) ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด์ ์ค๋ณต์ด ์๋ ๊ฒฝ์ฐ, curr.next ๋ฅผ ๊ฑด๋๋ฐ์ด ์ญ์ .๋ฆฌ์คํธ ๋๊น์ง ๋ฐ๋ณตํ๋ฉด์ ์ค๋ณต์ ์ ๊ฑฐ
createLinkedList(int[] values)
๋ฐฐ์ด์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๋ณํํ๋ ๋ฉ์๋
printLinkedList(ListNode head)
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ๋ ๋ฉ์๋
Last updated
Was this helpful?