使用了双指针
- 设置first指针和last分别位于前后相邻的位置,一次向后遍历里两步,则得到的frst过的为偶数位,last奇数位
- 同时考虑null指针的情况
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) return null;
ListNode fast = head.next;
ListNode last = head;
ListNode result1 = last;
ListNode result2 = fast;
if(fast == null) return head;
while(fast.next != null && fast.next.next != null){
last.next = last.next.next;
last = last.next;
fast.next = fast.next.next;
fast = fast.next;
}
if(fast.next == null){
last.next = result2;
}else{
last.next = last.next.next;
last = last.next;
fast.next = null;
last.next = result2;
}
return result1;
}
}