반응형
206. Reverse Linked List - Easy
Given the head of a singly linked list, reverse the list, and return the reversed list.
Example 1:
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
Example 2:
Input: head = [1,2]
Output: [2,1]
Example 3:
Input: head = []
Output: []
해설
문제 해결 전략
릿코드 디스커션에서 가져온 이미지입니다.
이미지를 설명하자면, 3개의 포인터 current next prev를 사용하여 LinkedList를 reverse 해주는 것을 확인할수있습니다.
구현 전략
prev, current, head 3 개의 포인터를 이용하여, 문제를 풀어주도록하겠습니다.
head앞에 있는 node를 prev라는 이름으로 null을 가진 변수를 만들어줍니다..
그리고 currnet는 아직 아무것도 지정되지않았으므로 current로 이름짓고 null로 지정해주겠습니다.
LinkedList에서 화살표의 방향이 바뀌기전에, 포인터들을 이동해주겠습니다.
null이였던 currnet의 값은 이제 head.next위치로 오게됩니다.
이제 화살표 방향을 바꿔줄 차례입니다. head.next를 통해 head다음을 null로 가르키게 합니다.
그리고 이 동작을 linkedList끝에 도달할때까지 반복해야하므로, prev와 head의 위치를 업데이트 해줍니다.
그리고 head가 null을 가르킬때까지 반복시키면 linkedlist를 반전시킬수있게 됩니다.
정답
var reverseList = function(head) {
let prev = null
let current = null
while(head){
current = head.next
head.next = prev
prev = head
head = current
}
return prev
};
반응형
'개발공부 > LeetCode' 카테고리의 다른 글
[JavaScript] 61. Rotate List Medium - 연결리스트 노드 옮기기, 쉬운설명, 반복문 사용 (0) | 2022.03.13 |
---|---|
[JavaScript] 21. Merge Two Sorted Lists - 쉬운설명 (0) | 2022.03.08 |
[JavaScript] 22. Generate Parentheses 풀이과정 쉬운 설명 - backtrack, recursion 활용 (0) | 2022.03.06 |
[LeetCode] 190. Reverse Bits - JAVASCRIPT 풀이 과정 , 개념 설명 - 비트 연산자 (0) | 2021.12.26 |
[Kotlin] 선형리스트를 활용한 문제풀이 LeetCode: Delete Node in a Linked List (0) | 2021.07.09 |