首页 > 其他分享 >52. N-Queens II刷题笔记

52. N-Queens II刷题笔记

时间:2023-05-26 22:02:09浏览次数:53  
标签:diag2 self II 刷题 diag1 usedCols Queens col row


回溯算法,参考该题解

class Solution:
    def totalNQueens(self, n: int) -> int:
        diag1 = set()
        diag2 = set()
        usedCols = set()
        
        return self.helper(n, diag1, diag2, usedCols, 0)

    def helper(self, n, diag1, diag2, usedCols, row):
        if row == n:
            return 1
        
        solutions = 0
        
        for col in range(n):
            if row + col in diag1 or row - col in diag2 or col in usedCols:
                continue
                
            diag1.add(row + col)
            diag2.add(row - col)
            usedCols.add(col)
            
            solutions += self.helper(n, diag1, diag2, usedCols, row + 1)
        
            diag1.remove(row + col)
            diag2.remove(row - col)
            usedCols.remove(col)
        
        return solutions

52. N-Queens II刷题笔记_算法


标签:diag2,self,II,刷题,diag1,usedCols,Queens,col,row
From: https://blog.51cto.com/u_16131692/6359382

相关文章

  • 1192. Critical Connections in a Network刷题笔记
    参考这个题解,用的dfsimportcollectionsclassSolution:defcriticalConnections(self,n:int,connections:List[List[int]])->List[List[int]]:defmakeGraph(coonections):graph=collections.defaultdict(list)forconnincon......
  • 1342. Number of Steps to Reduce a Number to Zero刷题笔记
    easy题,按照逻辑写就行了classSolution:defnumberOfSteps(self,num:int)->int:step=0whilenum:ifnum%2==0:num=num/2else:num-=1step+=1returnste......
  • 647. Palindromic Substrings刷题笔记
    用动态规划可以做,应该可以优化为只有两个表,而且不用每次res都加classSolution:defcountSubstrings(self,s:str)->int:n=len(s)dp=[[0]*nfor_inrange(n)]res=0foriinrange(n-1,-1,-1):forji......
  • 29. Divide Two Integers刷题笔记
    参考的题解classSolution:defdivide(self,dividend:int,divisor:int)->int:positive=(dividend<0)is(divisor<0)dividend,divisor=abs(dividend),abs(divisor)res=0whiledividend>=divisor:......
  • 304. Range Sum Query 2D - Immutable刷题笔记
    暴力做超时了,参考题解但是它只考虑了一种情况,事实上可以继续扩充的classNumMatrix:def__init__(self,matrix:List[List[int]]):m,n=len(matrix),len(matrix[0])self.sum=[[0]*(n+1)for_inrange(m+1)]#sum[i][j]issumofallel......
  • 剑指Offer58-II.左旋转字符串——学习笔记
    题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例1:输入:s="abcdefg",k=2输出:"cdefgab"示例2:输入:s="lrloseum......
  • 23-05-26 刷题-【中缀表达式求值的模板】
    basiccalculator系列题目:(可以作为模板题,记住)224.基本计算器-力扣(LeetCode)[hard]想法:中缀表达式求值。数据结构中栈的应用中缀转后缀。后缀能去掉括号。a+(b+c)*d==》abc+d*+后缀表达式求值:abc+d*+要考虑表达式的优先级,怎么处理括号。括号的优先级,不知......
  • Python默认编码错误SyntaxError: Non-ASCII character '\xe5'之解决方法
    在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息:解决方法:python的默认编码文件是用的ASCII码,你将文件存成了UTF-8!!!(文件中存在中文或者其他语言,就会出现此问题!)解决办法很简单!!!在文件开头加入:# -*- coding: U......
  • 1049. 最后一块石头的重量 II
    有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x<=y。那么粉碎的可能结果如下:如果x==y,那么两块石头都会被完全粉碎;如果x!=y,那么重量为x的石头将会完全......
  • #yyds干货盘点# LeetCode程序员面试金典:路径总和 II
    题目:给你二叉树的根节点root和一个整数目标和targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径。叶子节点是指没有子节点的节点。 示例1:输入:root=[5,4,8,11,null,13,4,7,2,null,null,5,1],targetSum=22输出:[[5,4,11,2],[5,8,4,5]]示例2:输入:root=......