diff --git a/src/main/kotlin/com_github_leetcode/neighbors/Node.kt b/src/main/kotlin/com_github_leetcode/neighbors/Node.kt deleted file mode 100644 index 75da4bdcb..000000000 --- a/src/main/kotlin/com_github_leetcode/neighbors/Node.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com_github_leetcode.neighbors - -import java.util.StringJoiner - -class Node(var `val`: Int) { - constructor(i: Int, asList: List) : this(i) { - this.neighbors = ArrayList(asList) - } - - var neighbors: ArrayList = ArrayList() - - override fun toString(): String { - val result = StringJoiner(",", "[", "]") - for (node in neighbors) { - if (node!!.neighbors.isEmpty()) { - result.add(node.`val`.toString()) - } else { - val result2 = StringJoiner(",", "[", "]") - for (nodeItem in node.neighbors) { - result2.add(nodeItem!!.`val`.toString()) - } - result.add(result2.toString()) - } - } - return result.toString() - } -} diff --git a/src/main/kotlin/com_github_leetcode/random/Node.kt b/src/main/kotlin/com_github_leetcode/random/Node.kt index ffe6b388b..2902b4172 100644 --- a/src/main/kotlin/com_github_leetcode/random/Node.kt +++ b/src/main/kotlin/com_github_leetcode/random/Node.kt @@ -1,7 +1,5 @@ package com_github_leetcode.random -import java.util.StringJoiner - class Node { var `val`: Int var next: Node? = null @@ -12,33 +10,38 @@ class Node { } override fun toString(): String { - val result = StringJoiner(",", "[", "]") - val result2 = StringJoiner(",", "[", "]") - result2.add(`val`.toString()) + val result = StringBuilder() + result.append("[") + result.append("[") + result.append(`val`) + result.append(",") if (random == null) { - result2.add("null") + result.append("null") } else { - result2.add(random!!.`val`.toString()) + result.append(random!!.`val`) } - result.add(result2.toString()) + result.append("]") var curr = next while (curr != null) { - val result3 = StringJoiner(",", "[", "]") - result3.add(curr.`val`.toString()) + result.append(",") + result.append("[") + result.append(curr.`val`) + result.append(",") if (curr.random == null) { - result3.add("null") + result.append("null") } else { var randomIndex = 0 - var curr2: Node? = this - while (curr2!!.next != null && curr2 !== curr.random) { - randomIndex += 1 - curr2 = curr2.next + var indexFinder: Node? = this + while (indexFinder!!.next != null && indexFinder !== curr.random) { + randomIndex++ + indexFinder = indexFinder.next } - result3.add(randomIndex.toString()) + result.append(randomIndex) } - result.add(result3.toString()) + result.append("]") curr = curr.next } + result.append("]") return result.toString() } } diff --git a/src/main/kotlin/g0101_0200/s0133_clone_graph/Solution.kt b/src/main/kotlin/g0101_0200/s0133_clone_graph/Solution.kt index 5580bd23b..9b8210c9b 100644 --- a/src/main/kotlin/g0101_0200/s0133_clone_graph/Solution.kt +++ b/src/main/kotlin/g0101_0200/s0133_clone_graph/Solution.kt @@ -1,9 +1,9 @@ package g0101_0200.s0133_clone_graph // #Medium #Hash_Table #Depth_First_Search #Breadth_First_Search #Graph #Udemy_Graph -// #Top_Interview_150_Graph_General #2022_10_09_Time_351_ms_(60.91%)_Space_37.1_MB_(70.56%) +// #Top_Interview_150_Graph_General #2025_08_03_Time_133_ms_(88.96%)_Space_43.11_MB_(67.94%) -import com_github_leetcode.neighbors.Node +import com_github_leetcode.Node /* * Definition for a Node. @@ -24,11 +24,10 @@ class Solution { } val newNode = Node(node.`val`) processedNodes[node] = newNode - newNode.neighbors = ArrayList() for (neighbor in node.neighbors) { - val clonedNeighbor: Node? = cloneGraph(neighbor, processedNodes) + val clonedNeighbor = cloneGraph(neighbor, processedNodes) if (clonedNeighbor != null) { - newNode.neighbors.add(clonedNeighbor) + (newNode.neighbors as ArrayList).add(clonedNeighbor) } } return newNode diff --git a/src/test/kotlin/com_github_leetcode/NodeTest.kt b/src/test/kotlin/com_github_leetcode/NodeTest.kt index 0a5311441..18b24922b 100644 --- a/src/test/kotlin/com_github_leetcode/NodeTest.kt +++ b/src/test/kotlin/com_github_leetcode/NodeTest.kt @@ -5,13 +5,6 @@ import org.hamcrest.MatcherAssert.assertThat import org.junit.jupiter.api.Test internal class NodeTest { - @Test - fun constructor() { - val node = Node() - assertThat(node.`val`, equalTo(0)) - assertThat(node.toString(), equalTo("[]")) - } - @Test fun constructor2() { val node = Node(1) diff --git a/src/test/kotlin/com_github_leetcode/neighbors/NodeTest.kt b/src/test/kotlin/com_github_leetcode/neighbors/NodeTest.kt deleted file mode 100644 index 8670d39a6..000000000 --- a/src/test/kotlin/com_github_leetcode/neighbors/NodeTest.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com_github_leetcode.neighbors - -import org.hamcrest.CoreMatchers.equalTo -import org.hamcrest.MatcherAssert.assertThat -import org.junit.jupiter.api.Test - -internal class NodeTest { - @Test - fun create() { - val node = com_github_leetcode.Node(1) - assertThat(node.`val`, equalTo(1)) - } - - @Test - fun create2() { - val node1 = Node(1) - val node2 = Node(2) - val node3 = Node(3) - val node4 = Node(4) - val node1and2and4 = Node(1, listOf(node2, node4)) - val node2and1and3 = Node(2, listOf(node1, node3)) - val node3and2and4 = Node(3, listOf(node2, node4)) - val node4and1and3 = Node(4, listOf(node1, node3)) - val node = Node( - 5, - listOf(node1and2and4, node2and1and3, node3and2and4, node4and1and3), - ) - assertThat(node.toString(), equalTo("[[2,4],[1,3],[2,4],[1,3]]")) - } -} diff --git a/src/test/kotlin/g0101_0200/s0133_clone_graph/SolutionTest.kt b/src/test/kotlin/g0101_0200/s0133_clone_graph/SolutionTest.kt index ab692bb7b..aa1d71459 100644 --- a/src/test/kotlin/g0101_0200/s0133_clone_graph/SolutionTest.kt +++ b/src/test/kotlin/g0101_0200/s0133_clone_graph/SolutionTest.kt @@ -1,6 +1,6 @@ package g0101_0200.s0133_clone_graph -import com_github_leetcode.neighbors.Node +import com_github_leetcode.Node import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.MatcherAssert.assertThat import org.junit.jupiter.api.Test