https://leetcode.com/problems/reverse-nodes-in-k-group/
연결 리스트의 head가 주어질 때 k개의 노드 리스트를 뒤집은 후 변환된 리스트 반환
k가 2이므로 2개씩 노드 리스트 기준으로 뒤집으면 된다. 그림에는 색으로 2개 단위로 표현되어 있다.
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int val=0, ListNode next=null) {
* this.val = val;
* this.next = next;
* }
* }
*/
public class Solution {
public ListNode ReverseKGroup(ListNode head, int k) {
ListNode currNode = new ListNode(0);
ListNode answerNode = currNode;
List<int> temp = new List<int>();
while(head != null)
{
temp.Clear();
for (int i = 0; i < k; i++)
{
if (head == null) break;
temp.Add(head.val);
head = head.next;
}
if (temp.Count < k)
{
for (int i = 0; i < temp.Count; i++)
{
currNode.next = new ListNode(temp[i]);
currNode = currNode.next;
}
}
else
{
for (int i = temp.Count - 1; i >= 0; i--)
{
currNode.next = new ListNode(temp[i]);
currNode = currNode.next;
}
}
}
return answerNode.next;
}
}