N-Queens II

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

Code

public class Solution {
    int res=0;

    private boolean isValid(int[] state, int r){
        for (int i=0; i<r; i++){
            if (state[i]==state[r] || (Math.abs(state[i]-state[r])==(r-i))) return false;
        }
        return true;
    }

    private void nqueens(int[] state, int cur, int n){
        if (cur==n) {res++;}
        else {
            for (int i=0; i<n; i++){
                state[cur]=i;
                if (isValid(state,cur)){
                    nqueens(state, cur+1, n);
                }
            }
        }

    }

    public int totalNQueens(int n) {
        int[] state = new int[n];
        nqueens(state, 0, n);
        return res;
    }
}