最近在网上看到一道很经典的算法题,自己也做了一下,第一遍思路有点问题,写的很复杂,然后参考了一下别人的解题思路
咱们不多bb了,直接上代码
function yy(queens, king) {
const result = [],
dd = [
[-1, 0],
[-1, 1],
[0, 1],
[1, 1],
[1, 0],
[1, -1],
[0, -1],
[-1, -1]
]
dd.forEach(([dx, dy]) => {
const temp = fin(dx, dy)
if (temp) result.push(temp)
})
function fin(dx, dy) {
let posX = king[0],
posY = king[1]
do {
posX += dx
posY += dy
if (queens.find(queen => {
return queen[0] === posX && queen[1] === posY
})) {
return [posX, posY]
}
} while (posX >= 0 && posX <= 8 && posY >= 0 && posY <= 8)
return null
}
return result
}
如果有更简单的方法也可以发出来,让大家一起学习一下