![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
cswhl
编码使人快乐
展开
-
Leetcode 51&52 - N皇后问题
题目:N queens将n个皇后放在n*n的棋盘上,任何两个皇后都不能攻击到对方思路分析一:递归N行N列的表格,每行有N列个单元格可以摆放"皇后",每将“皇后”摆放在一列,就看下一行是否可以继续摆放,直到不满足条件回溯,或者最终摆放成功,产生一个成功摆放方案。可行性剪枝用三个数组分别记录之前已成功摆好的"皇后"们的列位置、行列之和、行列之差。如果当前摆放"皇后"所在列已有,或行列之和已有,或行列之差已有,则代表与之前的皇后在同一行、或同一斜线上,即不满足条件停止递归递归截止条件当将所有行都摆原创 2020-12-02 15:16:41 · 81 阅读 · 0 评论 -
leetcode 22 生成合法的括号组合
22. Generate Parentheses给定n对括号,计算出n对括号的所有合法组合方法一、通过数学归纳法来枚举实现起来非常复杂…方法二、递归搜索,然后排除非法的括号组合将每一种括号的组合放在6个字符大小的数组中,共会产生22n个组合,时间复杂度位2(2n)如何判断非法括号组合:从左往后扫描,当左括号出现次数少于右括号时即非法,如:())(()方法三、在递归搜索的基础上使用剪枝法还是递归,但使用剪枝法来排除产生非法的括号组合:左括号可以随便添加,最多到n个,但右括号添加时,必须比左括号原创 2020-11-29 10:27:32 · 398 阅读 · 0 评论 -
leetcode104&111.找树的最大深度、最小深度
一、找树的最大深度1. 思路一 DFS查找递归查找左、右子树,查找到叶结点便开始返回,每返回一层,深度加1(逆向理解。正向则可理解为”最大深度+1“,默认从0层开始);每个子树返回包含最大深度的叶结点代码class Solution: def maxDepth(self, root: TreeNode) -> int: if not root: return 0 return 1 + max(self.maxDepth(root.lef原创 2020-11-27 10:04:19 · 284 阅读 · 4 评论 -
leetcode102.二叉树层次遍历
102. Binary Tree Level Order Traversal思路一、BFS广度优先搜索计算每层的结点数,在将它们逐个弹出加入层列表,并将其子结点加入队列1、通过迭代形式将每层结点加入队列,2、通过计算每层结点的数量(上层结点都从队列中弹出,而下层结点尚未加入队列,就可计算当层结点的数量。)3、遍历当层结点,将这些结点放入层列表,并将它们的子结点加入队列,作为下一层待操作的结点代码实现class Solution: def levelOrder(self, root:原创 2020-11-26 09:47:55 · 157 阅读 · 0 评论 -
简单密码的实现
1 题目描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–原创 2020-11-17 23:03:41 · 301 阅读 · 0 评论 -
从点斜线到牛顿迭代法
1 斜线方程及其根斜线方程:直线上一点(a,b)并且存在直线的斜率k,则直线可表示y=k(x−a)+by=k(x-a) + by=k(x−a)+b斜率:k=(y−y1)/(x−x1)k = (y-y1) / (x-x1)k=(y−y1)/(x−x1)根:“根”一般是指多项式的零点;先将y更改为f(x),即f(x)=k(x−a)+b,f(x)=0f(x)=k(x-a) + b, f(x)=0f(x)=k(x−a)+b,f(x)=0时的x值就是方函数(x)的根,就是斜线和x轴(y=0这条线)的交点原创 2020-11-17 21:31:33 · 603 阅读 · 0 评论