FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
leetcode-algorithms/src/ReorderList.java at master · anishLearnsToCode/leetcode-algorithms · GitHub
anishLearnsToCode
/
leetcode-algorithms
Public
Notifications
You must be signed in to change notification settings
Fork
17
Star
98
Code
Issues
0
Pull requests
0
Discussions
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
leetcode-algorithms
/
src
/
ReorderList.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
47 lines (42 loc) · 1.31 KB
Breadcrumbs
leetcode-algorithms
/
src
/
ReorderList.java
Copy path
File metadata and controls
47 lines (42 loc) · 1.31 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// https://leetcode.com/problems/reorder-list
// T: O(N)
// S: O(1)
public
class
ReorderList
{
public
void
reorderList
(
ListNode
head
) {
if
(
head
==
null
||
head
.
next
==
null
)
return
;
ListNode
middle
=
getMiddleOfLinkedList
(
head
);
ListNode
preMiddle
=
reverseLinkedList
(
middle
);
interleaveNodes
(
head
,
preMiddle
);
}
private
ListNode
getMiddleOfLinkedList
(
ListNode
head
) {
ListNode
p1
=
head
;
ListNode
p2
=
head
;
while
(
p2
.
next
!=
null
&&
p2
.
next
.
next
!=
null
){
p1
=
p1
.
next
;
p2
=
p2
.
next
.
next
;
}
return
p1
;
}
private
ListNode
reverseLinkedList
(
ListNode
head
) {
ListNode
preCurrent
=
head
.
next
;
while
(
preCurrent
.
next
!=
null
){
ListNode
current
=
preCurrent
.
next
;
preCurrent
.
next
=
current
.
next
;
current
.
next
=
head
.
next
;
head
.
next
=
current
;
}
return
head
;
}
// 1->2->3->6->5->4 to 1->6->2->5->3->4
private
void
interleaveNodes
(
ListNode
head
,
ListNode
preMiddle
) {
ListNode
p1
=
head
;
ListNode
p2
=
preMiddle
.
next
;
while
(
p1
!=
preMiddle
){
preMiddle
.
next
=
p2
.
next
;
p2
.
next
=
p1
.
next
;
p1
.
next
=
p2
;
p1
=
p2
.
next
;
p2
=
preMiddle
.
next
;
}
}
}
Back
|
FazBrowse Home
|
New Git URL