题解 | #基因变异最小次数#
基因变异最小次数
https://www.nowcoder.com/practice/ca6b659a3fde42c59276c9db98febd94
function minMutation( start , end , bank ) { // write code here let hash = new Set() let visted = new Set() const keys = ["A","C","G","T"] for(const k of bank) { hash.add(k) } if(start == end) return 0 if(!hash.has(end)) return -1 const queue = [start] visted.add(start) let step = 1 while(queue.length) { let len = queue.length; for(let i=0;i<len;i++) { const cur = queue.shift() for(let j=0;j<8;j++) { for(let k=0;k<4;k++) { if(cur[j] != keys[k]) { const temp = [...cur] temp[j] = keys[k] const next = temp.join("") if(!visted.has(next) && hash.has(next)) { if(next == end) return step visted.add(next) queue.push(next) } } } } } step++ } return -1 }