Reverse Nodes in k-Group - как такое может быть?
От: Codealot Земля  
Дата: 06.12.19 16:37
Оценка:
Пишет, что мое решение потребляет больше оперативки, чем 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;
        }
}
Ад пуст, все бесы здесь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.