public class Solution public ListNode reverseKGroup ListNode head int k if head == null return head Stackint stack = new Stack ListNode pre = new ListNode0cur = pre Lis
这段代码可以通过减少内存使用和减少不必要的操作来进行优化。
首先,我们可以不使用栈来存储节点值。而是直接使用一个数组,通过索引来访问节点值。这样可以减少内存使用。
其次,我们可以在循环中直接将节点反转,而不用先将节点值存储起来再创建新的节点。这样可以减少不必要的操作。
最后,我们可以在循环中判断剩余节点数量是否大于等于k,如果不是,就不需要进行反转操作了。这样可以减少不必要的操作。
下面是优化后的代码:
public class Solution{
public ListNode reverseKGroup (ListNode head, int k) {
if (head == null) return head;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
ListNode cur = head;
int count = 0;
while (cur != null) {
count++;
if (count % k == 0) {
pre = reverse(pre, cur.next);
cur = pre.next;
} else {
cur = cur.next;
}
}
return dummy.next;
}
private ListNode reverse(ListNode pre, ListNode next) {
ListNode last = pre.next;
ListNode cur = last.next;
while (cur != next) {
last.next = cur.next;
cur.next = pre.next;
pre.next = cur;
cur = last.next;
}
return last;
}
}
这样优化后的代码可以减少内存使用和减少不必要的操作,提高代码的效率
原文地址: http://www.cveoy.top/t/topic/iJXE 著作权归作者所有。请勿转载和采集!