Skip to content

Commit 4bfc92d

Browse files
committed
feat: add python and java solutions to leetcode problem: No.0328
1 parent 5d57b45 commit 4bfc92d

File tree

6 files changed

+81
-18
lines changed

6 files changed

+81
-18
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
1. [旋转链表](/solution/0000-0099/0061.Rotate%20List/README.md)
6767
1. [回文链表](/solution/0200-0299/0234.Palindrome%20Linked%20List/README.md)
6868
1. [相交链表](/solution/0100-0199/0160.Intersection%20of%20Two%20Linked%20Lists/README.md)
69+
1. [奇偶链表](/solution/0300-0399/0328.Odd%20Even%20Linked%20List/README.md)
6970
1. [环形链表](/solution/0100-0199/0141.Linked%20List%20Cycle/README.md)
7071
1. [环形链表 II](/solution/0100-0199/0142.Linked%20List%20Cycle%20II/README.md)
7172

README_EN.md

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ Complete solutions to [LeetCode](https://leetcode-cn.com/problemset/all/), [LCOF
6464
1. [Rotate List](/solution/0000-0099/0061.Rotate%20List/README_EN.md)
6565
1. [Palindrome Linked List](/solution/0200-0299/0234.Palindrome%20Linked%20List/README_EN.md)
6666
1. [Intersection of Two Linked Lists](/solution/0100-0199/0160.Intersection%20of%20Two%20Linked%20Lists/README_EN.md)
67+
1. [Odd Even Linked List](/solution/0300-0399/0328.Odd%20Even%20Linked%20List/README_EN.md)
6768
1. [Linked List Cycle](/solution/0100-0199/0141.Linked%20List%20Cycle/README_EN.md)
6869
1. [Linked List Cycle II](/solution/0100-0199/0142.Linked%20List%20Cycle%20II/README_EN.md)
6970

solution/0300-0399/0328.Odd Even Linked List/README.md

+24-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,17 @@
4545
# self.next = next
4646
class Solution:
4747
def oddEvenList(self, head: ListNode) -> ListNode:
48+
if head is None:
49+
return head
50+
evenHead = head.next
51+
odd, even = head, evenHead
52+
while even and even.next:
53+
odd.next = even.next
54+
odd = odd.next
55+
even.next = odd.next
56+
even = even.next
57+
odd.next = evenHead
58+
return head
4859
```
4960

5061
### **Java**
@@ -64,7 +75,19 @@ class Solution:
6475
*/
6576
class Solution {
6677
public ListNode oddEvenList(ListNode head) {
67-
78+
if (head == null) {
79+
return head;
80+
}
81+
ListNode evenHead = head.next;
82+
ListNode odd = head, even = evenHead;
83+
while (even != null && even.next != null) {
84+
odd.next = even.next;
85+
odd = odd.next;
86+
even.next = odd.next;
87+
even = even.next;
88+
}
89+
odd.next = evenHead;
90+
return head;
6891
}
6992
}
7093
```

solution/0300-0399/0328.Odd Even Linked List/README_EN.md

+24-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,17 @@
4949
# self.next = next
5050
class Solution:
5151
def oddEvenList(self, head: ListNode) -> ListNode:
52+
if head is None:
53+
return head
54+
evenHead = head.next
55+
odd, even = head, evenHead
56+
while even and even.next:
57+
odd.next = even.next
58+
odd = odd.next
59+
even.next = odd.next
60+
even = even.next
61+
odd.next = evenHead
62+
return head
5263
```
5364

5465
### **Java**
@@ -66,7 +77,19 @@ class Solution:
6677
*/
6778
class Solution {
6879
public ListNode oddEvenList(ListNode head) {
69-
80+
if (head == null) {
81+
return head;
82+
}
83+
ListNode evenHead = head.next;
84+
ListNode odd = head, even = evenHead;
85+
while (even != null && even.next != null) {
86+
odd.next = even.next;
87+
odd = odd.next;
88+
even.next = odd.next;
89+
even = even.next;
90+
}
91+
odd.next = evenHead;
92+
return head;
7093
}
7194
}
7295
```

solution/0300-0399/0328.Odd Even Linked List/Solution.java

+13-16
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,25 @@
33
* public class ListNode {
44
* int val;
55
* ListNode next;
6-
* ListNode(int x) { val = x; }
6+
* ListNode() {}
7+
* ListNode(int val) { this.val = val; }
8+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
79
* }
810
*/
911
class Solution {
1012
public ListNode oddEvenList(ListNode head) {
11-
// 链表结点数小于 3,直接返回
12-
if (head == null || head.next == null || head.next.next == null) {
13+
if (head == null) {
1314
return head;
1415
}
15-
ListNode dummy = new ListNode(-1);
16-
dummy.next = head;
17-
ListNode pre = head, t = pre.next, cur = t;
18-
while (cur != null && cur.next != null) {
19-
pre.next = cur.next;
20-
cur.next = cur.next.next;
21-
pre.next.next = t;
22-
pre = pre.next;
23-
// cur.next可能为空,所以在下一次循环要判断 cur != null 是否满足
24-
cur = cur.next;
25-
t = pre.next;
16+
ListNode evenHead = head.next;
17+
ListNode odd = head, even = evenHead;
18+
while (even != null && even.next != null) {
19+
odd.next = even.next;
20+
odd = odd.next;
21+
even.next = odd.next;
22+
even = even.next;
2623
}
27-
28-
return dummy.next;
24+
odd.next = evenHead;
25+
return head;
2926
}
3027
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Definition for singly-linked list.
2+
# class ListNode:
3+
# def __init__(self, val=0, next=None):
4+
# self.val = val
5+
# self.next = next
6+
class Solution:
7+
def oddEvenList(self, head: ListNode) -> ListNode:
8+
if head is None:
9+
return head
10+
evenHead = head.next
11+
odd, even = head, evenHead
12+
while even and even.next:
13+
odd.next = even.next
14+
odd = odd.next
15+
even.next = odd.next
16+
even = even.next
17+
odd.next = evenHead
18+
return head

0 commit comments

Comments
 (0)