Skip to content

Commit b48a4dd

Browse files
committed
feat: add python and java solution to leetcode problem: No.0019
1 parent 8bf27f7 commit b48a4dd

File tree

6 files changed

+116
-46
lines changed

6 files changed

+116
-46
lines changed

basic/sorting/MergeSort/MergeSort.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ private static void merge(int[] nums, int low, int mid, int high, int[] temp) {
1616
}
1717
}
1818

19-
for (i = low; i <= high; ++i) {
20-
nums[i] = temp[i];
21-
}
19+
System.arraycopy(tmp, low, nums, low, high - low + 1);
2220
}
2321

2422
private static void mergeSort(int[] nums, int low, int high, int[] temp) {

basic/sorting/MergeSort/README.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@ public class MergeSort {
2929
}
3030
}
3131

32-
for (i = low; i <= high; ++i) {
33-
nums[i] = temp[i];
34-
}
32+
System.arraycopy(tmp, low, nums, low, high - low + 1);
3533
}
3634

3735
private static void mergeSort(int[] nums, int low, int high, int[] temp) {

solution/0000-0099/0019.Remove Nth Node From End of List/README.md

+41-2
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,54 @@
3333
<!-- 这里可写当前语言的特殊实现逻辑 -->
3434

3535
```python
36-
36+
# Definition for singly-linked list.
37+
# class ListNode:
38+
# def __init__(self, val=0, next=None):
39+
# self.val = val
40+
# self.next = next
41+
class Solution:
42+
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
43+
dummy = ListNode(0, head)
44+
p = q = dummy
45+
for i in range(n):
46+
p = p.next
47+
while p.next is not None:
48+
p = p.next
49+
q = q.next
50+
q.next = q.next.next
51+
return dummy.next
3752
```
3853

3954
### **Java**
4055

4156
<!-- 这里可写当前语言的特殊实现逻辑 -->
4257

4358
```java
44-
59+
/**
60+
* Definition for singly-linked list.
61+
* public class ListNode {
62+
* int val;
63+
* ListNode next;
64+
* ListNode() {}
65+
* ListNode(int val) { this.val = val; }
66+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
67+
* }
68+
*/
69+
class Solution {
70+
public ListNode removeNthFromEnd(ListNode head, int n) {
71+
ListNode dummy = new ListNode(0, head);
72+
ListNode p = dummy, q = dummy;
73+
while (n-- > 0) {
74+
p = p.next;
75+
}
76+
while (p.next != null) {
77+
p = p.next;
78+
q = q.next;
79+
}
80+
q.next = q.next.next;
81+
return dummy.next;
82+
}
83+
}
4584
```
4685

4786
### **...**

solution/0000-0099/0019.Remove Nth Node From End of List/README_EN.md

+41-2
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,52 @@ After removing the second node from the end, the linked list becomes <strong>1-&
3333
### **Python3**
3434

3535
```python
36-
36+
# Definition for singly-linked list.
37+
# class ListNode:
38+
# def __init__(self, val=0, next=None):
39+
# self.val = val
40+
# self.next = next
41+
class Solution:
42+
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
43+
dummy = ListNode(0, head)
44+
p = q = dummy
45+
for i in range(n):
46+
p = p.next
47+
while p.next is not None:
48+
p = p.next
49+
q = q.next
50+
q.next = q.next.next
51+
return dummy.next
3752
```
3853

3954
### **Java**
4055

4156
```java
42-
57+
/**
58+
* Definition for singly-linked list.
59+
* public class ListNode {
60+
* int val;
61+
* ListNode next;
62+
* ListNode() {}
63+
* ListNode(int val) { this.val = val; }
64+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
65+
* }
66+
*/
67+
class Solution {
68+
public ListNode removeNthFromEnd(ListNode head, int n) {
69+
ListNode dummy = new ListNode(0, head);
70+
ListNode p = dummy, q = dummy;
71+
while (n-- > 0) {
72+
p = p.next;
73+
}
74+
while (p.next != null) {
75+
p = p.next;
76+
q = q.next;
77+
}
78+
q.next = q.next.next;
79+
return dummy.next;
80+
}
81+
}
4382
```
4483

4584
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* public class ListNode {
4+
* int val;
5+
* ListNode next;
6+
* ListNode() {}
7+
* ListNode(int val) { this.val = val; }
8+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9+
* }
10+
*/
111
class Solution {
212
public ListNode removeNthFromEnd(ListNode head, int n) {
3-
ListNode pre = new ListNode(-1);
4-
pre.next = head;
5-
ListNode fast = pre;
6-
ListNode slow = pre;
7-
8-
// 快指针先走 n 步
9-
for (int i = 0; i < n; ++i) {
10-
fast = fast.next;
13+
ListNode dummy = new ListNode(0, head);
14+
ListNode p = dummy, q = dummy;
15+
while (n-- > 0) {
16+
p = p.next;
1117
}
12-
while (fast.next != null) {
13-
fast = fast.next;
14-
slow = slow.next;
18+
while (p.next != null) {
19+
p = p.next;
20+
q = q.next;
1521
}
16-
17-
slow.next = slow.next.next;
18-
return pre.next;
22+
q.next = q.next.next;
23+
return dummy.next;
1924
}
2025
}
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
# Definition for singly-linked list.
22
# class ListNode:
3-
# def __init__(self, x):
4-
# self.val = x
5-
# self.next = None
6-
3+
# def __init__(self, val=0, next=None):
4+
# self.val = val
5+
# self.next = next
76
class Solution:
8-
def removeNthFromEnd(self, head, n):
9-
"""
10-
:type head: ListNode
11-
:type n: int
12-
:rtype: ListNode
13-
"""
14-
pre=ListNode(-1)
15-
pre.next=head
16-
fast=pre
17-
slow=pre
18-
19-
for _ in range(n):
20-
fast=fast.next
21-
while fast.next:
22-
fast=fast.next
23-
slow=slow.next
24-
slow.next=slow.next.next
25-
return pre.next
7+
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
8+
dummy = ListNode(0, head)
9+
p = q = dummy
10+
for i in range(n):
11+
p = p.next
12+
while p.next is not None:
13+
p = p.next
14+
q = q.next
15+
q.next = q.next.next
16+
return dummy.next

0 commit comments

Comments
 (0)