기어가더라도 제대로

[LeetCode-Swift] 92. Reverse Linked List II 본문

CS/알고리즘

[LeetCode-Swift] 92. Reverse Linked List II

Damagucci-juice 2023. 9. 16. 12:43

문제

링크드 리스트와 left, right 인덱스가 주어질 때 Left 인덱스 부터 right 인덱스까지를 뒤집은 Linked List를 반환하라. 
  • 뒤집는 다는 접근을 어떻게 할지감이 오지 않아서 오래 걸린 문제 -> 결국 답지를 보았다. 

 

풀이

  • 다양한 포인터가 필요할 것 같았는데, 크게는 p, tail, temp가 필요했다. 그리고 그들 사이에 연결을 뒤섞는 순서도 중요했다. 
  1. 더미 노드와 P 포인터를 선언함 
  2. p 포인터를 left-1까지 당겨옴
  3. p의 다음 포인터를 tail로 선언
  4. left-right의 길이 만큼 a,b,c,d 컴비네이션을 적용
  • a) p의 다음 노드를 tmp로 지정한다. 
  • b) p의 다음 노드로 tail의 다음 노드를 지정한다. 
  • c) tail.next.next를 tail.next에 저장한다. 
  • d) p의 다음 다음 노드를 temp로 저장

글로 보면 이해가 안되서 그림으로 보는게 중요하다. 

 

샘플 코드

 

소감

  • 글이 어려울 땐 그림만한게 없다. 
  • 어려울 땐 도움을 받아서 내것으로 만들자.

출처

https://leetcode.com/problems/reverse-linked-list-ii/description/?envType=study-plan-v2&envId=top-interview-150

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

Comments