时间复杂度O(n),空间复杂度O(1)
- 设置3个指针,分别指向当前节点,前一个节点,前前节点
- 重新改变指针的指向
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode oddEvenList (ListNode head) { // write code here if(head == null || head.next == null ||head.next.next == null) return head; ListNode second = head.next; ListNode prepre = head; ListNode pre = head.next; ListNode p = head.next.next; int count = 2; while(p!= null) { count ++; prepre.next = p; prepre = pre; pre = p; p = p.next; } if(count %2 ==1) { pre.next = second; prepre.next = null; }else{ prepre.next = second; } return head; } }