leetcode 328. Odd Even Linked List 解题报告

来源:互联网 发布:ubuntu如何卸载jdk 编辑:程序博客网 时间:2024/06/04 17:05

原题链接

原题链接

解题思路

第一次题目没看清楚,以为是按值的奇偶来判断,然后导致只过了部分测试案例,后面仔细审题发现是按照位置的奇偶判断。
代码实现不是很难,为了警示自己审题,我还是两个代码都贴出来吧。

解题代码(正解)

public class Solution {public ListNode oddEvenList(ListNode head) {    if (head != null) {        ListNode odd = head, even = head.next, evenHead = even;         while (even != null && even.next != null) {            odd.next = odd.next.next;             even.next = even.next.next;             odd = odd.next;            even = even.next;        }        odd.next = evenHead;     }    return head;}}

解题代码(错误理解题意)

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode oddEvenList(ListNode head) {        if(head == null) return null;        ListNode cur = head;        ListNode oddh = null;        ListNode odd = null;        ListNode evenh = null;        ListNode even = null;        while(cur != null) {            ListNode next = cur.next;            if(cur.val % 2 == 0) {                evenh = evenh == null ? cur:evenh;                if(even == null) {                    even = evenh;                } else {                    even.next = cur;                    even = even.next;                }                even.next = null;            }            if(cur.val % 2 != 0) {                oddh = oddh == null ? cur:oddh;                if(odd == null) {                    odd = oddh;                } else {                    odd.next = cur;                    odd = odd.next;                }                odd.next = evenh == null? next:evenh;            }                        cur = next;        }        return oddh;    }}
0 0