반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 61 | Rotate List | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/rotate-list/
문제
Given the head of a linked list, rotate the list to the right by k places.
조건
- The number of nodes in the list is in the range [0, 500].
- -100 <= Node.val <= 100
- 0 <= k <= 2 * $10^9$
내 풀이
주어진 리스트(head)의 길이를 파악한 후, 이를 이용해 k의 숫자를 줄인다. (k %= count)
왼쪽으로 rotate할 경우에는 이를 그대로 사용해도 되지만, 오른쪽으로 rotate 해야하므로 count-k를 k로 재정의한다.
이 때, k가 head의 길이와 같다면 전체 rotate한 후 그대로 return되기 때문에 바로 head를 return한다.
앞에서부터 k번째 노드를 기준으로 자른 후, 뒤 리스트를 앞으로 붙이면 된다.
코드
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def rotateRight(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
if not head or not head.next: return head
nhead = head
count = 1
while nhead.next:
count += 1
nhead = nhead.next
k %= count
k = count - k
if k == count: return head
nhead = head
while k > 1:
k -= 1
nhead = nhead.next
ans = nhead.next
nhead.next = None
findTail = ans
while findTail.next:
findTail = findTail.next
findTail.next = head
return ans
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 1249 | Minimum Remove to Make Valid Parentheses | Python (0) | 2022.03.15 |
---|---|
[LeetCode] 71 | Simplify Path | Python (0) | 2022.03.14 |
[LeetCode] 2 | Add Two Numbers | Python (0) | 2022.03.10 |
[LeetCode] 141 | Linked List Cycle | Python (0) | 2022.03.08 |
[LeetCode] 21 | Merge Two Sorted Lists | Python (0) | 2022.03.07 |
Comments