leetcode 문제 풀이 K 세트 반전 링크

체인 시 계 를 드 리 겠 습 니 다. k 개의 노드 마다 한 조 를 뒤 집 습 니 다. 뒤 집 힌 체인 시 계 를 되 돌려 주 십시오.
k 는 정수 로 링크 의 길이 보다 작 거나 같 습 니 다.
만약 에 노드 총수 가 k 의 정수 배가 아니라면 마지막 에 남 은 노드 를 원래 의 순서 로 유지 하 십시오.
  :

      :1->2->3->4->5

  k = 2: 2->1->4->3->5

  k = 3: 3->2->1->4->5

 

  :

               。
                ,            。

출처: 스냅 백 (LeetCode) 링크:https://leetcode-cn.com/problems/reverse-nodes-in-k-group 저작권 은 인터넷 에 귀속 된다.상업 전 재 는 정부 에 연락 하여 권한 을 부여 해 주 십시오. 비 상업 전 재 는 출처 를 밝 혀 주 십시오.
방법 이 비교적 둔 하 다. 배열 로 옮 겨 다 닌 다음 에 k 의 배수 역순 으로 새로운 링크 에 출력 한다.
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        List<Integer> list = new ArrayList<>();
        while(head!=null){
            list.add(head.val);
            head = head.next;
        }
        ListNode resNode = new ListNode(0);
        ListNode tem = resNode;
        int times = list.size()/k;
        for(int i=1;i<=times;i++){
            int start = (i-1)*k;
            int end = i*k-1;
            for(int j=end;j>=start;j--){
                tem.next=new ListNode(list.get(j));
                tem = tem.next;
            }
        }
        for(int i=times*k;i<list.size();i++){
            tem.next=new ListNode(list.get(i));
                tem = tem.next;
        }
        return resNode.next;
    }
}

좋은 웹페이지 즐겨찾기