Skip to content

Commit 65ef457

Browse files
committed
Merge branch 'release/v1.0.22.0'
2 parents 853dc5a + 1b5ebdf commit 65ef457

File tree

4 files changed

+55
-31
lines changed

4 files changed

+55
-31
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,11 @@ to keep up with the language and learn how to use the Scala test library as well
3535
* Contains duplicate
3636
* Middle of linked list
3737
* Jewels and stones
38+
* Reverse linked list
3839

3940
## Versions
41+
* v1.0.21.0 (10/12/2018) - Added Reverse linked list exercise.
42+
4043
* v1.0.21.0 (10/07/2018) - Added Jewels and stones exercise.
4144

4245
* v1.0.20.2 (10/06/2018) - Improved null argument handling for Middle of linked list exercise.

src/main/scala/org/codecraftlabs/leetcode/Main.scala

-31
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.codecraftlabs.leetcode
2+
3+
import scala.collection.mutable
4+
5+
object ReverseLinkedList {
6+
def reverseList(head: ListNode): ListNode = {
7+
val nodeStack = mutable.ArrayStack[ListNode]()
8+
process(head, nodeStack)
9+
nodeStack.head
10+
}
11+
12+
private def process(node: ListNode, nodeStack: mutable.ArrayStack[ListNode]): Unit = {
13+
if (node != null) {
14+
val item = node.next
15+
16+
val headItem = nodeStack.headOption
17+
headItem match {
18+
case None => node.next = null
19+
case _ => node.next = headItem.get
20+
}
21+
22+
nodeStack.push(node)
23+
process(item, nodeStack)
24+
}
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.codecraftlabs.leetcode
2+
3+
import org.codecraftlabs.leetcode.ListNodeUtils.mkString
4+
import org.codecraftlabs.leetcode.ReverseLinkedList.reverseList
5+
import org.scalatest.{FlatSpec, Matchers}
6+
7+
class ReverseLinkedListSpec extends FlatSpec with Matchers {
8+
it should "return 3 -> 2 -> 1" in {
9+
val node1 = new ListNode(1)
10+
val node2 = new ListNode(2)
11+
val node3 = new ListNode(3)
12+
13+
node1.next = node2
14+
node2.next = node3
15+
16+
val result = mkString(reverseList(node1))
17+
result shouldEqual "3-2-1"
18+
}
19+
20+
it should "return 1" in {
21+
val node1 = new ListNode(1)
22+
val result = mkString(reverseList(node1))
23+
result shouldEqual "1"
24+
}
25+
}
26+

0 commit comments

Comments
 (0)