LeetCoding Challenge Oct. 7: Rotate List

5196 단어 JavaLeetCodetech
LetCode October Charling 7일째.
오늘의 문제는Rotate List입니다.

문제의 개요

  • 주어진 링크 목록의 요소를 오른쪽 저위 k개로 되돌려준 결과
  • 생각


  • 어제의 문제와 마찬가지로 대학의 과정(약)
  • 이런 문제는 어리석게 해결하는 것이 좋다
  • 이번 해법
  • 먼저 목록의 시작부터 끝까지 핥아서 목록의 길이len와 마지막 노드의 참조tail를 구한다.

  • 사전 조정klen하지 않도록k이상
  • len - k 이후의 요소가 목록의 시작으로 낮게 이동
  • tailhead의 다음 노드로 연결하여 목록을 임시로 고리 모양으로
  • 에 이어서 제len - k - 1 노드의 참고를 얻다
  • 이 노드는 목록의 새로운 끝 노드가 되고 다음 노드는 목록의 새로운 시작 노드가 된다
  • 이 노드와 다음 링크 차단
  • submit→runtime 0ms 달성🎉
  • 코드


    class Solution {
        public ListNode rotateRight(ListNode head, int k) {
            if (head == null || head.next == null) {
                return head;
            }
    
            ListNode tail = null;
            int len = 0;
            for (ListNode node = head; node != null; node = node.next) {
                tail = node;
                len++;
            }
    
            k = len - (k % len);
            if (k == 0) {
                return head;
            }
    
            tail.next = head;
    
            for (ListNode node = head; k > 0; node = node.next) {
                tail = node;
                k--;
            }
    
            head = tail.next;
            tail.next = null;
    
            return head;
        }
    }
    

    좋은 웹페이지 즐겨찾기