From b785f670d217e728a9b7265fcf86f3a5ef635fde Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 10 Feb 2021 13:57:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9B=E6=89=A3=EF=BC=9A328.=20=E5=A5=87?= =?UTF-8?q?=E5=81=B6=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../study/LinkNode/t20210210/OddEvenList.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 LeetCode/src/main/java/com/code/leet/study/LinkNode/t20210210/OddEvenList.java diff --git a/LeetCode/src/main/java/com/code/leet/study/LinkNode/t20210210/OddEvenList.java b/LeetCode/src/main/java/com/code/leet/study/LinkNode/t20210210/OddEvenList.java new file mode 100644 index 0000000..70a4ff8 --- /dev/null +++ b/LeetCode/src/main/java/com/code/leet/study/LinkNode/t20210210/OddEvenList.java @@ -0,0 +1,47 @@ +package com.code.leet.study.LinkNode.t20210210; + +import com.code.leet.entiy.ListNode; + +/** + * 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 + *

+ * 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 + *

+ * 示例 1: + *

+ * 输入: 1->2->3->4->5->NULL + * 输出: 1->3->5->2->4->NULL + * 示例 2: + *

+ * 输入: 2->1->3->5->6->4->7->NULL + * 输出: 2->3->6->7->1->5->4->NULL + * 说明: + *

+ * 应当保持奇数节点和偶数节点的相对顺序。 + * 链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。 + *

+ * 来源:力扣(LeetCode) + * 链接:https://leetcode-cn.com/problems/odd-even-linked-list + * 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 + */ +public class OddEvenList { + /** + * 328. 奇偶链表 + */ + public ListNode oddEvenList(ListNode head) { + if (head == null || head.next == null || head.next.next == null) { + return head; + } + ListNode odd = head; + ListNode even = head.next; + ListNode evenTemp = even; + while (even != null && even.next != null) { + odd.next = even.next; + odd = odd.next; + even.next = odd.next; + even = even.next; + } + odd.next = evenTemp; + return odd; + } +}