연결 리스트는 데이터 요소의 선형 집합으로, 데이터의 순서가 메모리에 물리적인 순서대로 저장되지는 않는다.
동적으로 새로운 노드 삽입/삭제 간편
관리가 쉬움(물리 메모리를 연속적으로 사용하지 않기 때문)
데이터를 포인터로 연결한다는 개념: 여러 가지 방법으로 활용 가능
탐색: O(n)
시작/끝 지점에 아이템 추가, 삭제, 추출: O(1)
리트코드의 ListNode 코드
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
풀이1 | 리스트 변환 | 164ms |
---|---|---|
풀이2 | 데크를 이용한 최적화 | 72ms |
풀이3 | 고(Go)를 이용한 데크 구현 | 16ms |
풀이4 | 런너를 이용한 우아한 풀이 | 64ms |
연결 리스트를 파이썬의 리스트로 변환해서 풀이
연결 리스트 자료형을 변환하지 않고 풀이하면 더욱 깔끔할 것.