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类 */ //时间复杂度O(n),空间复杂度O(1) public ListNode oddEvenList (ListNode head) { if(head == null || head.next == null) return head ; ListNode odd = head ;//奇链表头结点 ListNode eve = head.next ;//偶链表头节点 ListNode odd_cur = odd ;//奇链表当前节点 ListNode eve_cur = eve ;//偶链表当前节点 ListNode odd_cur_pre = null ;///奇链表当前节点的前一个节点 while(true) { odd_cur.next = odd_cur.next.next ; odd_cur_pre = odd_cur ; odd_cur = odd_cur.next ; if(odd_cur == null) break ; eve_cur.next = eve_cur.next.next ; eve_cur = eve_cur.next ; if(eve_cur == null) break ; } if(odd_cur == null) { odd_cur = odd_cur_pre ; } //拼接 odd_cur.next = eve ; return odd ; } }