File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ * public class ListNode {
3
+ * int val;
4
+ * ListNode next;
5
+ * ListNode() {}
6
+ * ListNode(int val) { this.val = val; }
7
+ * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
8
+ * }
9
+ */
10
+ class Solution {
11
+ public boolean isPalindrome (ListNode head ) {
12
+ if (head .next == null ){
13
+ return true ;
14
+ }
15
+
16
+ ListNode middleNode = getMiddleNode (head );
17
+ ListNode head1 = head ;
18
+ ListNode head2 = middleNode .next ;
19
+ middleNode .next = null ;
20
+ head2 = reverseLinkedList (head2 );
21
+
22
+ while (head1 !=null && head2 !=null ){
23
+ if (head1 .val != head2 .val ){
24
+ return false ;
25
+ }
26
+ head1 = head1 .next ;
27
+ head2 = head2 .next ;
28
+ }
29
+
30
+ return true ;
31
+ }
32
+
33
+ public ListNode getMiddleNode (ListNode node ){
34
+ ListNode slow = node ;
35
+ ListNode fast = node .next ;
36
+
37
+ while (fast !=null && fast .next !=null ){
38
+ slow = slow .next ;
39
+ fast = fast .next .next ;
40
+ }
41
+
42
+ return slow ;
43
+ }
44
+
45
+ public ListNode reverseLinkedList (ListNode node ){
46
+ if (node ==null || node .next == null ){
47
+ return node ;
48
+ }
49
+
50
+ ListNode newHead = reverseLinkedList (node .next );
51
+ node .next .next = node ;
52
+ node .next = null ;
53
+ return newHead ;
54
+ }
55
+ }
You can’t perform that action at this time.
0 commit comments