![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
斯科菲尔德666
这个作者很懒,什么都没留下…
展开
-
二叉树题目合集【Python】
这篇文章记录了leetcode上目前遇到的二叉树的题目。110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1原创 2020-07-18 13:23:41 · 1364 阅读 · 0 评论 -
二叉搜索树合集【Python】
这篇文章记录了leetcode上目前遇到的二叉搜索树的题目,复习的时候可以和二叉树算法合集一块看。查700. 二叉搜索树中的搜索给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ 1原创 2020-07-14 20:48:01 · 327 阅读 · 0 评论 -
原地哈希总结【Python】
一般情况下,我们使用哈希表解决的问题是「统计待查找的每项出现的次数」,实现方法是用Python中「字典」保存。需要借助额外的O(n)O(n)O(n)空间来保存这个字典。但是在一些题目中,明确要求「在不使用额外空间」的条件下实现,那么此时只能通过原地修改数组,来反映出原数组每项出现的次数。这就是「原地哈希」问题。所谓原地哈希,就是建立「数组中待查找的项」和「对应下标」的映射关系,然后把所有项都放到应该放的位置。这就可以通过查看「恢复后数组中的项」和「其下标」是否满足该映射关系,来间接得到每个项出现的次数。原创 2020-07-12 12:09:16 · 817 阅读 · 0 评论 -
Python置换操作浅析(a, b=b, a)【Python】
在C/C++中,交换两个数的常规方法有以下两种:借助临时变量tmp = aa = bb = tmp加法操作a = a + bb = a - ba = a - b但是在Python中,还有一种更简便的方法:a, b = b, a# 或 b, a = a, b这种方法在一般情况下可以很容易的完成变量交换,甚至在数组中一般情况也是成立的。但是这两天在刷Leetcode时, 题目:缺失的第一个正数,碰到了一个问题,在对数组中的两个值进行交换的时候,即将nums[i]和nums[nu原创 2020-07-08 23:53:15 · 1987 阅读 · 0 评论 -
区间问题合集【Python】
区间调度问题之重叠区间、区间合并以及求区间交集。解决区间问题的一般思路是先排序,再操作。关于排序方式的选择,不同的题型选择而不同的排序方式:对于重叠区间问题,往往是和贪心策略有关,因此根据右端点排序,维护end变量。用最少数量的箭引爆气球无重叠区间对于合并区间问题,习惯来说就是从左至右依次合并,因此根据左端点排序,维护一个res数组,每次从res中取最后一个区间的右端点作为比较的标准合并区间划分字母区间452. 用最少数量的箭引爆气球给定每原创 2020-07-02 16:24:40 · 1755 阅读 · 0 评论 -
滑动窗口算法技巧【Python】
这篇文章通过几道题目来总结滑动窗口算法的解题模板与技巧。直接给出滑动窗口解题的模板left, right = 0, 0win = []while right < len(s): win.append(s[right]) right += 1 while isValid(win): win.pop(0) left += 1 209. 长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如原创 2020-06-30 22:39:06 · 8788 阅读 · 1 评论 -
Python列表的赋值,浅拷贝和深拷贝详解【Python】
最近在刷leetcode的回溯题时,涉及到列表的拷贝,在此记录下列表拷贝的不同。下文的例子多数借鉴于https://www.cnblogs.com/dfc001/p/11526151.html1. 列表的赋值赋值主要是设定了一个变量的引用,赋值主要方式是通过等于号’=’。a = [1, 2, [3]]b = ab.append(4)print(a, id(a))print(b, id(b))输出结果[1, 2, [3], 4] 4457931016[1, 2, [3], 4] 445原创 2020-06-29 22:11:17 · 480 阅读 · 0 评论 -
回溯算法详解【Python】
这篇文章总结了到目前为止在leetcode上所遇到的回溯算法的题目,包括:生成全排列、求子集、指定路径和等等。回溯算法实际上是穷举的过程,代码的递归形式中主要体现为做选择和撤销选择,那么首先给出回溯算法的框架:result = []def _backtrace(选择列表nums, 路径pre_list): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 _原创 2020-06-29 14:20:08 · 5880 阅读 · 1 评论 -
二分查找详解【Python】
在此记录下二分查找的常用模板,包括查找指定数、查找左边界和右边界,以后解题就用这个模板。一、查找指定数(基本的二分搜索)def binarySearch(nums, target): left, right = 0, len(nums)-1 # 搜索区间两边为闭 while left <= right: # 注意停止条件,停止条件为[left, left+1] mid = left + (right - left) // 2 # 所有情况都写出来 if nums原创 2020-06-12 21:45:44 · 1214 阅读 · 0 评论 -
经典排序算法总结和对比【Python实现】
在此整理出几种经典的排序算法:插入排序:直接插入排序、折半插入排序、希尔排序交换排序:冒泡排序、快速排序选择排序:简单选择排序归并排序堆排序一、插入排序1. 直接插入排序介绍:将原始数组分成有序区[0, i-1]和无序区[i, n-1]两块,每次将无序区的第一个元素nums[i]和有序区的元素nums[i-1]~nums[0]从后往前比较,插入到有序区中合适的位置。复杂度:时间复杂度O(n2)O(n^2)O(n2),空间复杂度O(1)O(1)O(1)稳定性:不涉及到元素的交换,所原创 2020-06-12 15:34:39 · 387 阅读 · 1 评论 -
二叉树算法合集【python】【递归+非递归】
下面是整理的一些二叉树的常见问题,包括求最大最小深度、前中后序以及层序遍历的递归和非递归解法、由前中序序列构建树等。1. 求最大深度1.1 递归解法:非常清晰,递归逻辑即分别求左右子树高度,取大值加一即可 def maxDepth(self, root): if root is None: return 0 lefth = self....原创 2020-03-16 16:58:23 · 657 阅读 · 0 评论 -
Anaconda中使用conda install出现PackagesNotFoundError【解决方法】
笔者在使用conda install安装指定包jieba时,出现了PackagesNotFoundError: The following packages are not available from current channels:- jiebaCurrent channels:-https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/fr...原创 2019-04-18 14:24:39 · 17079 阅读 · 13 评论 -
Pycharm新建项目如何不创建新的虚拟环境virtualenv【吐槽】
之前虽然一直用Pycharm,但是使用时候有困扰我很久的问题:每一个项目的工程文件都大的一批,不方便打包每次打开pycharm都要重新配置interpreter,我一直想使用anaconda中现有的虚拟环境,但是每次打开都要重新手动配置,很烦最近终于解决了这两个问题,开启了轻便使用pycharm的旅程。解决方法:查看文件夹为什么这么大,通过跟别人对比之后发现自己多了一个venv...原创 2019-04-02 20:24:21 · 12243 阅读 · 1 评论 -
【动态规划】LCS算法 python
问题描述1求两字符串的连续最大公共子字符串(The Longest Common Substring)这个LCS问题就是求两个字符串最长公共子串的问题。解法就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0。然后求出对角线最长的1的序列,其对应的位置就是最长匹配子串的位置。如图1所示,在对角线上,连续的1就代表了两字符串对应的位置连续相等。从该矩阵中...原创 2019-04-04 16:29:55 · 4889 阅读 · 1 评论 -
Python爬取动态网页实例讲解
笔者在做爬虫作业时,遇到了一个动态网页,分析代码网页源代码时因此就少了许多需要的元素。下面用一个实例来记录一下爬取动态网页的步骤。实例:股票定向爬虫这个实例目标是从东方财富网获取股票列表,然后根据股票列表逐个到百度股票获取个股信息,最后将结果存储到文件。基本也看的出来代码就是上面三个步骤。踩雷一开始没发现这是个动态网页,因为我在需要的信息上面直接右键检查,发现信息挺全的,但是代码会变一下,...原创 2019-03-30 23:10:57 · 12218 阅读 · 3 评论 -
Scrapy保存中文字符到json文件时编码设置
最近在根据(http://www.runoob.com/w3cnote/scrapy-detail.html)学习Scrapy时,遇到一个问题:使用scrapy crawl执行爬虫程序并导入一个json文件,此时可以看到,命令行窗口显示的保存内容是中文,但在打开导出的json文件时,其内容却显示为以\u开头的Unicode编码:之后查询相关资料后,发现有两个解决方法:执行爬虫命令时,加...原创 2019-03-21 10:39:44 · 1930 阅读 · 1 评论