File tree 4 files changed +55
-31
lines changed
main/scala/org/codecraftlabs/leetcode
test/scala/org/codecraftlabs/leetcode
4 files changed +55
-31
lines changed Original file line number Diff line number Diff line change @@ -35,8 +35,11 @@ to keep up with the language and learn how to use the Scala test library as well
35
35
* Contains duplicate
36
36
* Middle of linked list
37
37
* Jewels and stones
38
+ * Reverse linked list
38
39
39
40
## Versions
41
+ * v1.0.21.0 (10/12/2018) - Added Reverse linked list exercise.
42
+
40
43
* v1.0.21.0 (10/07/2018) - Added Jewels and stones exercise.
41
44
42
45
* v1.0.20.2 (10/06/2018) - Improved null argument handling for Middle of linked list exercise.
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
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 number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments