天天看点

LeetCode题解328.奇偶链表(分治算法)java(详细解释,逐行代码注释)

本题是将链表进行分开,举个例子:

有如下链表:1->2->3->4->5->6

经过本题的算法处理后输出的listNode序列为:1->3->5->2->4->6

也就是将奇数位置与偶数位置的元素聚集在一起;

结合代码注释即可看懂

有问题欢迎关注我的微信公众号:AI学习经历分享,

LeetCode题解328.奇偶链表(分治算法)java(详细解释,逐行代码注释)

还有大量算法与开发的网盘学习资源,也可以加我微信与我私聊~

算法运行截图:

LeetCode题解328.奇偶链表(分治算法)java(详细解释,逐行代码注释)
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode oddEvenList(ListNode head) {
        if(head==null){
            return null;//如果链表为空则返回null
        }
        ListNode evenHead = head.next; //定义偶数链表的起始节点
        ListNode odd = head,even=evenHead; //odd为奇数的起始节点,even为偶数链表的起始节点
        while(even!=null && even.next!=null){
            odd.next=even.next; //奇数链表的下一个节点为原来链表的偶数位置的下一个节点
            odd=odd.next;//奇数链表赋值
            even.next=odd.next;//偶数链表的下一个节点为原来链表的奇数位置的下一个节点
            even=even.next;//偶数链表赋值
        }
        odd.next=evenHead;//奇数链表与偶数链表拼接
        return head;//链表最终处理结果输出
    }
}