mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 15:45:40 +08:00
Merge pull request #2754 from suinming/kamacoder-53-js
feat: 53. 寻宝新增js算法
This commit is contained in:
@ -693,6 +693,55 @@ if __name__ == "__main__":
|
|||||||
### Rust
|
### Rust
|
||||||
|
|
||||||
### Javascript
|
### Javascript
|
||||||
|
```js
|
||||||
|
function prim(v, edges) {
|
||||||
|
const grid = Array.from({ length: v + 1 }, () => new Array(v + 1).fill(10001)); // Fixed grid initialization
|
||||||
|
const minDist = new Array(v + 1).fill(10001)
|
||||||
|
const isInTree = new Array(v + 1).fill(false)
|
||||||
|
// 建構鄰接矩陣
|
||||||
|
for(const [v1, v2, w] of edges) {
|
||||||
|
grid[v1][v2] = w
|
||||||
|
grid[v2][v1] = w
|
||||||
|
}
|
||||||
|
// prim 演算法
|
||||||
|
for (let i = 1 ; i < v ; i++) {
|
||||||
|
let cur = -1
|
||||||
|
let tempMinDist = Number.MAX_VALUE
|
||||||
|
// 1. 尋找距離生成樹最近的節點
|
||||||
|
for (let j = 1 ; j < v + 1 ; j++) {
|
||||||
|
if (!isInTree[j] && minDist[j] < tempMinDist) {
|
||||||
|
tempMinDist = minDist[j]
|
||||||
|
cur = j
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 2. 將節點放入生成樹
|
||||||
|
isInTree[cur] = true
|
||||||
|
// 3. 更新非生成樹節點與生成樹的最短距離
|
||||||
|
for (let j = 1 ; j < v + 1 ; j++) {
|
||||||
|
if (!isInTree[j] && grid[cur][j] < minDist[j]) {
|
||||||
|
minDist[j] = grid[cur][j]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(minDist.slice(2).reduce((acc, cur) => acc + cur, 0))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const rl = require('readline').createInterface({ input: process.stdin })
|
||||||
|
const iter = rl[Symbol.asyncIterator]()
|
||||||
|
const readline = async () => (await iter.next()).value
|
||||||
|
const [v, e] = (await readline()).split(" ").map(Number)
|
||||||
|
const edges = []
|
||||||
|
for (let i = 0 ; i < e ; i++) {
|
||||||
|
edges.push((await readline()).split(" ").map(Number))
|
||||||
|
}
|
||||||
|
prim(v, edges)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
main()
|
||||||
|
```
|
||||||
|
|
||||||
### TypeScript
|
### TypeScript
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user