diff --git a/kotlin/1584-min-cost-to-connect-all-points.kt b/kotlin/1584-min-cost-to-connect-all-points.kt new file mode 100644 index 000000000..aa684c44a --- /dev/null +++ b/kotlin/1584-min-cost-to-connect-all-points.kt @@ -0,0 +1,22 @@ +class Solution { + fun minCostConnectPoints(points: Array): Int { + val minHeap = PriorityQueue> { a: Pair, b: Pair -> a.second - b.second } // sort by distance + val visited = HashSet() + var minCost = 0 + minHeap.add(Pair(0,0)) + while(visited.size < points.size){ + val (node,cost) = minHeap.poll() + if(visited.contains(node)) + continue + minCost += cost + visited.add(node) + for(i in 0..points.size-1){ + val (nextX,nextY) = points[i] + val (currentX, CurrentY) = points[node] + val distance = Math.abs(currentX - nextX) + Math.abs(CurrentY - nextY) + minHeap.add(Pair(i,distance)) + } + } + return minCost + } +}