Golang solution (3ms)


  • 0
    func totalNQueens(n int) (result int) {
        columns := make([]int, n)
        totalNQueensHelper(n, 0, columns, &result)
        return result
    }
    
    func totalNQueensHelper(n, row int, columns []int, result *int) {
        if row == n {
            *result++
            return
        }
        for col := 0; col < n; col++ {
            columns[row] = col
            if valid(columns, row) {
                totalNQueensHelper(n, row + 1, columns, result)
            }
        }
    }
    
    func valid(columns []int, row int) bool {
        for i := 0; i < row; i++ {
            diff := int(math.Abs(float64(columns[i] - columns[row])))
            // diff == 0            : Queens are in the same column
            // diff == lastRow - i  : Queens are placed diagonally
            //                        i.e, |col2 - col1| == |row2 - row1|
            if diff == 0 || diff == row - i { return false }
        }
        return true
    }
    

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.