Пишет, что мое решение потребляет больше оперативки, чем 80% остальных решений. Кто-нибудь может объяснить, где тут можно выжать еще оперативки?
public class Solution {
public ListNode ReverseKGroup(ListNode head, int k) {
if (head == null || k == 0 || k == 1)
return head;
var res = new ListNode(-1);
var resTail = res;
var newChainHead = head;
var cur = head.next;
var i = 1;
while (true)
{
if (cur == null)
{
if (i == k)
{
var tmp = Reverse(newChainHead, null);
resTail.next = tmp;
}
else
{
resTail.next = newChainHead;
}
break;
}
if (i == k)
{
var tmp = Reverse(newChainHead, cur);
resTail.next = tmp;
resTail = newChainHead;
newChainHead = cur;
i = 1;
cur = cur.next;
continue;
}
cur = cur.next;
i++;
}
return res.next;
}
static ListNode Reverse(ListNode head, ListNode afterTail)
{
if (head == afterTail)
return head;
var res = head;
var cur = head.next;
res.next = null;
while (true)
{
if (cur == null || cur == afterTail)
break;
var next = cur.next;
cur.next = res;
res = cur;
cur = next;
}
return res;
}
}