File tree 3 files changed +54
-27
lines changed
0021.Merge Two Sorted Lists
0876.Middle of the Linked List
3 files changed +54
-27
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * public class ListNode {
4
+ * int val;
5
+ * ListNode next;
6
+ * ListNode(int x) { val = x; }
7
+ * }
8
+ */
1
9
class Solution {
2
10
public ListNode mergeTwoLists (ListNode l1 , ListNode l2 ) {
3
- if (l1 == null ) {
4
- return l2 ;
11
+ ListNode head = new ListNode (0 );
12
+ head .next = null ;
13
+ ListNode current = head ;
14
+ while (l1 != null && l2 != null ) {
15
+ if (l1 .val <= l2 .val ) {
16
+ current .next = l1 ;
17
+ l1 = l1 .next ;
18
+ } else {
19
+ current .next = l2 ;
20
+ l2 = l2 .next ;
21
+ }
22
+ current = current .next ;
5
23
}
6
- if (l2 == null ) {
7
- return l1 ;
8
- }
9
- if (l1 .val < l2 .val ) {
10
- l1 .next = mergeTwoLists (l1 .next , l2 );
11
- return l1 ;
12
- }
13
- l2 .next = mergeTwoLists (l1 , l2 .next );
14
- return l2 ;
24
+ current .next = l1 != null ? l1 : l2 ;
25
+ return head .next ;
15
26
}
16
27
}
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * public class ListNode {
4
+ * int val;
5
+ * ListNode next;
6
+ * ListNode(int x) { val = x; }
7
+ * }
8
+ */
9
+ class Solution {
10
+ public ListNode reverseList (ListNode head ) {
11
+ if (head == null ) return null ;
12
+ ListNode reverse = null ;
13
+ while (head != null ) {
14
+ ListNode temp = head ;
15
+ head = head .next ;
16
+ if (reverse == null ) {
17
+ reverse = temp ;
18
+ temp .next = null ;
19
+ } else {
20
+ temp .next = reverse ;
21
+ reverse = temp ;
22
+ }
23
+ }
24
+ return reverse ;
25
+ }
26
+ }
Original file line number Diff line number Diff line change 1
- class Solution {
2
- public ListNode middleNode (ListNode head ) {
3
- if (head == null || head .next == null ) {
4
- return head ;
5
- }
6
- ListNode fast = head ;
7
- ListNode slow = head ;
8
- while (fast .next != null ) {
9
- // 快指针每次循环走两步,慢指针走一步
10
- fast = fast .next .next ;
11
- slow = slow .next ;
12
- if (fast == null || fast .next == null ) {
13
- return slow ;
14
- }
15
- }
16
- return null ;
1
+ public ListNode middleNode (ListNode head ) {
2
+ ListNode low = head , first = head ;
3
+ while (first != null && first .next != null ) {
4
+ low = low .next ;
5
+ first = first .next .next ;
17
6
}
7
+ return low ;
18
8
}
You can’t perform that action at this time.
0 commit comments