本文主要是介绍代码随想录35期Day30-Java,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Day30题目
写在前面
五一收假,并且这三道题都是选做,明天看一下吧。
LeetCode332.重新安排行程 :todo
LeetCode51. N皇后
class Solution {List<String> path = new ArrayList<>();List<List<String>> res = new ArrayList<>();int count = 0;boolean[] column = new boolean[10];public List<List<String>> solveNQueens(int n) {help(n);return res;}public void help(int n){// count 是已经放置的皇后个数if(count == n){res.add(new ArrayList<>(path));return;}for(int i = 0 ; i < n ; i ++){if(valid(n,count,i)){// 构建当前值column[i] = true;char[] temp = new char[n];Arrays.fill(temp,'.');temp[i] = 'Q';path.add(new String(temp));count++;help(n);count--;// 使当前这一行不重复,行已经由count进行保证过了column[i] = false;path.removeLast(); }}}// 在这里判断是否合法public boolean valid(int n ,int x, int y){if(column[y]) return false;// x 是第几行// 数学关系要推导一下for(int i = 0 ; i < x; i ++){if(y-(x-i) >= 0 && path.get(i).charAt(y-(x-i)) == 'Q') return false;if(y+(x-i) < n && path.get(i).charAt(y+(x-i)) == 'Q') return false;}return true;}
}
LeetCode37. 解数独 :todo
这篇关于代码随想录35期Day30-Java的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!