본문 바로가기

반응형

연결리스트

(6)
[리트코드] Odd Even Linked List(python) 리트코드, Odd Even Linked List_홀짝 연결리스트 TL;DR 연결리스트(Linked List)를 활용할 수 있는지 문제 분석 1. 주어진 연결리스트에 대해서 홀수 인덱스끼리 묶은 연결리스트와 짝수 인덱스끼리 묶은 연결리스트로 재정렬된 연결리스트를 반환하라. 2. 첫번째 노드부터 홀수, 두번째 노드부터 짝수로 가정한다. 3. 홀수와 짝수 내에서 입력에 주어진 순서를 유지해야 한다. 4. O(1)의 공간복잡도와 O(n)의 시간복잡도로 해결해야 한다. - 1 : 해결해야 하는 문제 조건에 대해 설명하고 있다. - 2 ~ 3 : 세부 조건에 대해서 말하고 있다. 입출력 형태 파트에서 이 조건에 대해서 살펴본다. - 4 : 문제 해결 시 만족해야 하는 조건에 대해서 설명하고 있다. 리스트와 같은 변..
[리트코드] Swap Nodes in Pairs(python) 리트코드, Swap Nodes in Pairs_인접 노드 바꾸기 TL;DR 연결리스트(LinkedList)를 활용할 수 있는지 문제 분석 1. 주어진 연결 리스트에 대해서 인접한 노드들을 바꾸고, 바뀐 연결 리스트를 반환한다. 2. 각 노드의 값을 바꾸어 문제를 해결하면 안 된다. - 1 : 해결해야 하는 문제에 대해서 설명하고 있다. 노드들을 둘씩 짝지어 짝지은 노드를 서로 바꾼 연결리스트를 반환해야 한다. - 2 : 제한조건이다. 연결리스트의 노드가 갖고 있는 값을 바꾸어 문제를 해결하면 안 된다. 입출력 형태 - 주어진 연결리스트의 노드를 짝지으면 1 - 2, 3 - 4와 같이 짝을 지을 수 있다. - 짝지은 노드들을 맞바꾼 연결리스트를 반환하면 된다. 풀이 # Definition for singl..
[리트코드] Add Two Numbers(python) 리트코드, Add Two Numbers_두 수 더하기 TL;DR 연결 리스트(Linked List) 문제를 해결할 수 있는지 문제 분석 1. 음수가 아닌 정수를 표현하는 비어 있지 않은 두 개의 연결 리스트가 주어진다. 2. 숫자들은 연결 리스트에 거꾸로 삽입되어 있고, 각 노드는 자리수를 포함하고 있다. 3. 두 숫자를 더한 결과를 링크드 리스트에 담아 반환한다. 4. 0 하나만 있는 것을 제외하고 0으로 시작하는 경우는 없다. - 1 ~ 4 : 해결해야 하는 문제 조건에 대해서 설명하고 있다. 두 개의 숫자가 역으로 연결 리스트에 저장되어 있다는 것에 주목해야 한다. 입출력 형태 - 예시 1 - L1이 나타내는 수는 342, L2가 나타내는 수는 465이다. - 두 수를 더한 결과인 807을 연결 리..
[리트코드] Reverse Linked List(python) 리트코드, Reverse Linked List_연결 리스트 뒤집기 TL;DR 연결 리스트(Linked List) 문제를 해결할 수 있는지 문제 분석 1. 주어진 연결 리스트를 뒤집은 리스트를 반환하라. 입출력 형태 - 입력으로 주어진 연결 리스트를 뒤집은 연결 리스트를 반환하면 된다. 풀이 class Solution: def reverseList(self, head: ListNode) -> ListNode: if not head: return None slow, rev = head, None while slow: rev, rev.next, slow = slow, rev, slow.next return rev - https://firsteast.tistory.com/35 에서 러너(Runner) 기법을 활..
[리트코드] Merge Two Sorted Lists(python) 리트코드, Merge Two Sorted Lists_정렬된 두 개의 리스트 병합 TL;DR 연결 리스트(Linked list)를 문제 조건에 맞게 구현할 수 있는지 문제 분석 1. 두 개의 정렬된 리스트를 병합하고, 정렬된 리스트의 형태로 반환한다. 2. 반환되는 리스트는 주어진 두 개의 함께 리스트를 엮어(splicing) 만들어야 한다. - 1 : 해결해야 하는 문제에 대해서 말하고 있다. - 2 : 반환 조건에 대해서 말하고 있다. 별도의 연결 리스트를 선언하지 않고, 두 개의 연결 리스트를 하나의 정렬된 연결 리스트로 만들어야 한다. 입출력 형태 - 예시에는 배열처럼 주어졌지만 실제로는 연결 리스트로 구현되어 있다. - 두 개의 연결 리스트를 예시 1과 같이 오름차순으로 정렬된 하나의 연결 리스트..
[리트코드] Palindrome Linked List(python) 리트코드, Palindrome Linked List_연결리스트 팰린드롬 TL;DR 연결 리스트(Linked List)를 활용하여 팰린드롬 문제를 해결할 수 있는지 문제 분석 1. 주어진 연결 리스트 head가 팰린드롬일 경우 true를 반환하여라. - 1 : 해결해야 하는 문제에 대해서 말하고 있다. 특이한 점은 연결 리스트로 자료형이 주어져 있다는 것이다. 입출력 형태 - 예시에서는 리스트 형태로 입력이 주어지지만, 입력은 연결 리스트 형태로 주어진다. class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next - val에는 해당하는 노드의 값이 주어지고, next에는 연결된 다음 연결 리스트가 주어진다. -..