def

LeetCode | 0235. 二叉搜索树的最近公共祖先【Python】

假装没事ソ 提交于 2021-01-21 01:35:48
Problem LeetCode Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST. According to the definition of LCA on Wikipedia : “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself ).” Example 1: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dGzMQij7-1610372086960)( https://assets.leetcode.com/uploads/2018/12/14/binarysearchtree_improved.png )] Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8 Output: 6 Explanation: The LCA of

LeetCode | 0530. 二叉搜索树的最小绝对差【Python】

巧了我就是萌 提交于 2021-01-21 00:25:31
Problem LeetCode Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes. Example: Input: 1 \ 3 / 2 Output: 1 Explanation: The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3). Note: There are at least two nodes in this BST. This question is the same as 783: https://leetcode.com/problems/minimum-distance-between-bst-nodes/ 问题 力扣 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例: 输入: 1 \ 3 / 2 输出: 1 解释: 最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。 提示: 树中至少有 2 个节点。 本题与 783 https://leetcode-cn.com

LeetCode | 0508. 出现次数最多的子树元素和【Python】

久未见 提交于 2021-01-20 23:14:20
Problem LeetCode Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a node is defined as the sum of all the node values formed by the subtree rooted at that node (including the node itself). So what is the most frequent subtree sum value? If there is a tie, return all the values with the highest frequency in any order. Examples 1 Input: 5 / \ 2 -3 return [2, -3, 4], since all the values happen only once, return all of them in any order. Examples 2 Input: 5 / \ 2 -5 return [2], since 2 happens twice, however -5 only occur once. Note: You may assume

沿用Python+Flask+Mysql的web建设技术开发网站

混江龙づ霸主 提交于 2021-01-20 09:29:01
1 系统概要说明 1.1开发目的 如今音乐已经成为人们尤其是年轻人的日常必备。走路,坐车,逛街,我们都能看到戴着耳机听音乐的人。古风曲、日韩风、欧美风、hippop等等各种音乐风格多样。随着媒体的发展,微博微信公众号媒体采访等等的发展,人们对音乐的理解也开始不只是限于听,越来越多的人开始了解歌曲背后的含义的故事。每首歌曲背后都有着不一样的情感和故事,每首歌都代表着不一样的经历和成长。总有歌曲里似乎有着我们的身影和故事,在某个瞬间已是如同曲中人。 发现歌曲背后的故事,聊聊属于我们的感受和想法,分享藏着我们记忆和故事的那些歌。在音乐的世界中,放松自己,了解自己,也学会好好爱自己和珍惜身边的人。 2 网站结构设计 1.网站允许不登录的游客访问,游客可以在网站首页查看网站用户发布的相关帖子,可以查看音乐榜单,但是只能看当前页的帖子,不可以过页查看,并且不允许评论和发布帖子。 2.网站用户先注册后登录,注册需要填写不少于3字符的用户名、设置密码;注册后可用用户名和密码登录。密码错误或者用户名错误都无法登录。 3.网站用户登录后,导航栏会显示用户名,用户如若需要下线或者切换帐号可以注销帐号重新登录。 4.网站用户登录后,可以查看网站用户发布的所有帖子,可以进行评论、点赞和收藏,网站也会根据浏览记录推荐相关的帖子。 5.网站用户登录后,可以浏览自己发布过的帖子,发过的评论和查看自己的个人信息

LeetCode 76. 最小覆盖子串 | Python

邮差的信 提交于 2021-01-20 05:53:03
76. 最小覆盖子串 题目来源: https://leetcode-cn.com/problems/minimum-window-substring 题目 给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。 示例: 输入: S = "ADOBECODEBANC", T = "ABC" 输出: "BANC" 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。 解题思路 思路:滑动窗口 题目中要求,给定一个字符串 S,一个字符串 T,要在字符串 S 中找到包含 T 的所有字符的最小子串。 在这里,最主要的是找到最小子串。这一部分的内容就是要我们要维护更新的内容。 假如使用暴力解的话,代码大概如下: for i in range(len(S)): for j in range(len(S)): if S[i:j] 包含 T 中所有字符: 更新存储这部分的内容 在这里时间复杂度为 O(n^2),不太理想。 本篇幅使用的是滑动窗口的思想。这里使用双指针,通过一静一动来达到搜索的目的。大致的思路如下: 首先初始化双指针,同时指向字符串 S 的开始位置(假设定义 left、right),那么 [left, right) 这个区间就是我们说的窗口,我们通过指针移动来控制窗口的大小。

认识Python中的闭包:闭包入门到自闭

﹥>﹥吖頭↗ 提交于 2021-01-19 17:58:10
本文首发于: 行者AI python 中什么是闭包?闭包有什么用?为什么要用闭包?今天我们就带着这3个问题来一步一步认识闭包。 闭包和函数紧密联系在一起,介绍闭包前有必要先介绍一些背景知识,诸如嵌套函数、变量的作用域等概念。 1. 作用域 作用域是程序运行时变量可被访问的范围,定义在函数内的变量是局部变量,局部变量的作用范围只能是函数内部范围内,它不能在函数外引用。 定义在模块最外层的变量是全局变量,它是全局范围内可见的,当然在函数里面也可以读取到全局变量的。而在函数外部则不可以访问局部变量。例如: a = 1 def foo(): print(a) # 1 def foo(): print(a) # NameError: name 'num' is not defined 2. 嵌套函数 函数不仅可以定义在模块的最外层,还可以定义在另外一个函数的内部,像这种定义在函数里面的函数称之为嵌套函数 (nested function) 。对于嵌套函数,它可以访问到其外层作用域中声明的非局部 (non-local) 变量,比如代码示例中的变量 a 可以被嵌套函数 printer 正常访问。 def foo(): #foo是外围函数 a = 1 # printer是嵌套函数 def printer(): print(a) printer() foo() # 1

Django rest framework----认证

≡放荡痞女 提交于 2021-01-19 09:52:09
Django rest framework----认证 先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework源码中到处都是基于CBV和面向对象的封装 (1)面向对象封装的两大特性 把同一类方法封装到类中 将数据封装到对象中 (2)CBV CBV(class base views) 就是在视图里使用类处理请求。 对应的还有 FBV(function base views) 就是在视图里使用函数处理请求。 基于反射实现根据请求方式不同,执行不同的方法 原理:url-->view方法-->dispatch方法(反射执行其它方法:GET/POST/PUT/DELETE等等) CBV(class base views) 就是在视图里使用类处理请求。 Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性 如果我们要写一个处理GET方法的view,用函数FBV写的话是下面这样。 from django.http import

Django REST framework基础:认证、权限、限制

試著忘記壹切 提交于 2021-01-19 09:49:08
Django REST framework基础:认证、权限、限制 认证、权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制。然后 权限 和 限制 组件决定是否拒绝这个请求。 简单来说就是: 认证确定了你是谁 权限确定你能不能访问某个接口 限制确定你访问某个接口的频率 认证 REST framework 提供了一些开箱即用的身份验证方案,并且还允许你实现自定义方案。 接下类我们就自己动手实现一个基于Token的认证方案: 自定义Token认证 表 定义一个用户表和一个保存用户Token的表: class UserInfo(models.Model): username = models.CharField(max_length=16 ) password = models.CharField(max_length=32 ) type = models.SmallIntegerField( choices =((1, ' 普通用户 ' ), (2, ' VIP用户 ' )), default =1 ) class Token(models.Model): user = models.OneToOneField(to= ' UserInfo ' ) token_code = models.CharField(max_length=128)

python打造seo必备工具-自动查询排名

心不动则不痛 提交于 2021-01-19 07:57:59
因为工作需要,利用业余时间开发的,可以查询百度排名+360排名工具,附上代码。 #360搜索排名查询 # -*- coding=utf-8 -*- import requests from lxml import etree headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' } def ss360(keyword,num,search_url): search_datas='' for x in range(1,num+1): print(f"正在查询第{x}页搜索结果...") url=f"https://www.so.com/s?q={keyword}&pn={x}" html=requests.get(url,headers=headers).text #print(html) con=etree.HTML(html) #print(con) title=con.xpath('//h3[@class="res-title "]/a/text()') #print(title) #print(len(title)) datas=con.xpath('///h3

Django rest_framework 认证源码流程

。_饼干妹妹 提交于 2021-01-19 07:37:30
一、请求到来后,都要先执行dispatch方法 dispatch根据请求方式的不同触发get/post/put/delete等方法 注意,APIView中的dispatch方法有很多的功能 def dispatch(self, request, *args, ** kwargs): """ `.dispatch()` is pretty much the same as Django's regular dispatch, but with extra hooks for startup, finalize, and exception handling. """ self.args = args self.kwargs = kwargs 第一步:对request进行加工(添加数据) request = self.initialize_request(request, *args, ** kwargs) self.request = request self.headers = self.default_response_headers # deprecate? try : # 第二步: # 处理版权信息 # 认证 # 权限 # 请求用户进行访问频率的限制 self.initial(request, *args, ** kwargs) # Get the appropriate