Skip to content

Commit 5f4bcae

Browse files
authored
Added task 19.
1 parent d732208 commit 5f4bcae

File tree

7 files changed

+126
-15
lines changed

7 files changed

+126
-15
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com_github_leetcode
2+
3+
import java.util.Objects
4+
5+
class ListNode {
6+
var `val` = 0
7+
var next: ListNode? = null
8+
9+
constructor() {}
10+
11+
constructor(`val`: Int) {
12+
this.`val` = `val`
13+
}
14+
15+
constructor(`val`: Int, next: ListNode?) {
16+
this.`val` = `val`
17+
this.next = next
18+
}
19+
20+
override fun toString(): String {
21+
val result = StringBuilder("" + `val`)
22+
if (Objects.nonNull(next)) {
23+
var current = next
24+
while (current!!.next != null) {
25+
result.append(", ")
26+
result.append(current.`val`)
27+
current = current.next
28+
}
29+
result.append(", ")
30+
result.append(current.`val`)
31+
}
32+
return result.toString()
33+
}
34+
}

src/main/kotlin/g0001_0100/s0002_add_two_numbers/ListNode.kt

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/main/kotlin/g0001_0100/s0002_add_two_numbers/Solution.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package g0001_0100.s0002_add_two_numbers
22

3+
import com_github_leetcode.ListNode
4+
35
/*
46
* Definition for singly-linked list.
57
* public class ListNode {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package g0001_0100.s0019_remove_nth_node_from_end_of_list
2+
3+
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Two_Pointers #Linked_List
4+
5+
import com_github_leetcode.ListNode
6+
7+
class Solution {
8+
var n = 0
9+
fun removeNthFromEnd(head: ListNode?, n: Int): ListNode? {
10+
this.n = n
11+
val node = ListNode(0, head)
12+
removeNth(node)
13+
return node?.next
14+
}
15+
16+
private fun removeNth(node: ListNode?) {
17+
if (node?.next == null) {
18+
return
19+
}
20+
removeNth(node.next)
21+
n--
22+
if (n == 0) {
23+
node.next = node?.next?.next
24+
}
25+
}
26+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
19\. Remove Nth Node From End of List
2+
3+
Medium
4+
5+
Given the `head` of a linked list, remove the `nth` node from the end of the list and return its head.
6+
7+
**Example 1:**
8+
9+
![](https://assets.leetcode.com/uploads/2020/10/03/remove_ex1.jpg)
10+
11+
**Input:** head = [1,2,3,4,5], n = 2
12+
13+
**Output:** [1,2,3,5]
14+
15+
**Example 2:**
16+
17+
**Input:** head = [1], n = 1
18+
19+
**Output:** []
20+
21+
**Example 3:**
22+
23+
**Input:** head = [1,2], n = 1
24+
25+
**Output:** [1]
26+
27+
**Constraints:**
28+
29+
* The number of nodes in the list is `sz`.
30+
* `1 <= sz <= 30`
31+
* `0 <= Node.val <= 100`
32+
* `1 <= n <= sz`
33+
34+
**Follow up:** Could you do this in one pass?

src/test/kotlin/g0001_0100/s0002_add_two_numbers/SolutionTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package g0001_0100.s0002_add_two_numbers
22

3+
import com_github_leetcode.ListNode
34
import org.hamcrest.CoreMatchers.equalTo
45
import org.hamcrest.MatcherAssert.assertThat
56
import org.junit.jupiter.api.Test
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package g0001_0100.s0019_remove_nth_node_from_end_of_list
2+
3+
import com_github_leetcode.ListNode
4+
import org.hamcrest.CoreMatchers.equalTo
5+
import org.hamcrest.MatcherAssert.assertThat
6+
import org.junit.jupiter.api.Test
7+
8+
internal class SolutionTest {
9+
@Test
10+
fun removeNthFromEnd() {
11+
val head = ListNode()
12+
val node1 = ListNode()
13+
node1.`val` = 1
14+
head.next = node1
15+
val node2 = ListNode()
16+
node2.`val` = 2
17+
node1.next = node2
18+
val node3 = ListNode()
19+
node3.`val` = 3
20+
node2.next = node3
21+
val node4 = ListNode()
22+
node4.`val` = 4
23+
node3.next = node4
24+
val node5 = ListNode()
25+
node5.`val` = 5
26+
node4.next = node5
27+
assertThat(Solution().removeNthFromEnd(node1, 2).toString(), equalTo("1, 2, 3, 5"))
28+
}
29+
}

0 commit comments

Comments
 (0)