自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 Python3的深拷贝与浅拷贝

1. 可变类型与不可变类型在理解深拷贝和前拷贝之前,首先要了解python的可变类型和不可变类型:可变类型:list、dict不可变类型:number、str、bool、tuplepython中的不可变数据类型,不允许变量的值 原地 发生变化,一但值发生了变化,则相当于新建了一个对象,id会变。所以,可变类型:值变化,id不变化;不可变类型:值变化,id变化。2. 指向当 变量 = xx 时,认为该变量指向了xx的内存空间>>> a = [11, 22]>&

2021-12-08 23:16:42 3444 2

原创 二分查找 35. 搜索插入位置 34. 在排序数组中查找元素的第一个和最后一个位置 33. 搜索旋转排序数组

35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例:示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,...

2020-04-21 23:25:56 220

原创 回溯算法 39. 组合总和 52. N皇后II

39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例:示例 1:输入: candidates = [2,3,6,7], target = ...

2020-04-21 14:45:28 204

原创 递归 247. 中心对称数 II

247. 中心对称数 II中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。找到所有长度为 n 的中心对称数。示例:输入: n = 2输出: ["11","69","88","96"]思路:递归根据题目要求n = 1 [‘0’, ‘1’, ‘8’]n = 2 [‘11’, ‘69’, ‘88’, ‘96’]n = 3 [‘101...

2020-04-20 23:50:33 608

原创 栈和队列 239. 滑动窗口最大值

239. 滑动窗口最大值给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,2,5,3,6,7], 和 k = 2输出: [3, 3, 2, 5, 5, 6, 7]解释: 滑动窗口的位置 ...

2020-04-20 15:18:59 141

原创 数组/列表 74. 搜索二维矩阵 240. 搜索二维矩阵II

74. 搜索二维矩阵思路1:取每行数组的第一个元素与target判断,若target大于当前行第一个元素,且小于下一行第一个元素,则在此行进行匹配。代码实现1:class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: # 特殊情况判断:1、矩阵为空 2、...

2020-04-02 00:13:23 141

原创 树 236. 二叉树的最近公共祖先 105. 从前序与中序遍历序列构造二叉树 102. 二叉树的层序遍历

236. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例:给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:...

2020-04-02 00:11:00 184

原创 树 94. 二叉树的中序遍历 114. 二叉树展开为链表 538/1038. 把二叉搜索树转换为累加树 98. 验证二叉搜索树

94. 二叉树的中序遍历思路1:迭代递归的调用过程是不断往左边走,当左边走不下去了,就打印节点,并转向右边,然后右边继续这个过程。我们在迭代实现时,就可以用栈来模拟上面的调用过程。代码实现1:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self...

2020-04-01 20:24:00 168

原创 树 226. 翻转二叉树 617.合并二叉树 101. 对称二叉树

226. 翻转二叉树翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1思路1:递归根据动画图我们可以总结出递归的两个条件如下:终止条件:当前节点为null时返回交换当前节点的左右节点,再递归...

2020-03-31 22:00:28 119

原创 树 112. 路径总和 113. 路径总和II 437. 路径总和III

112. 路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 1...

2020-03-31 17:13:12 135

原创 树 104. 二叉树的最大深度 110.平衡二叉树 543. 二叉树的直径

104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回它的最大深度 3 思路1:递归递归通式:判断一个节点的最大深度,需要...

2020-03-30 14:00:22 173

原创 数组/列表 283. 移动零 566.重塑矩阵 485. 最大连续1的个数

283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]思路1:暴力法遍历列表,遇到零的时候将其移除,并添加到列表末尾代码实现1:class Solution: def moveZ...

2020-03-29 13:38:16 202

原创 动态规划 70. 爬楼梯 198. 打家劫舍 120. 三角形最小路径和 62. 不同路径

198. 打家劫舍思路:动态规划代码实现:class Solution: def rob(self, nums: List[int]) -> int: if not nums: return 0 elif len(nums) == 1: return nums[0] else: ...

2020-03-26 21:50:04 159

原创 华为机试108题 11-20

11. 数字颠倒 12. 字符串反转输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001输入:输入一个int整数输出:将这个整数以字符串的形式逆序输出示例:输入1516000输出0006151思路:字符串反转代码实现:str_num = str(input())print(str_nu...

2020-03-24 13:43:49 1213

原创 质数问题 204. 计数质数

204. 计数质数统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。思路:埃拉托色尼筛选法要得到自然数n以内的全部质数,必须把不大于根号n的所有质数的倍数剔除,剩下的就是质数。初始化一个存放n个元素的列表 isPrime,元素初始值为1,表示该元素所在的位置索引值是一个质数遍历...

2020-03-24 09:54:47 198

原创 华为机试108题 1-10

1. 字符串最后一个单词的长度计算字符串最后一个单词的长度,单词以空格隔开。输入:一行字符串,非空,长度小于5000。输出:整数N,最后一个单词的长度。示例:输入hello world输出5思路:考察split()函数和取列表最后一个值代码实现:s = input()lst = s.split(' ')print(len(lst[-1]))2. 计算字符个数...

2020-03-23 16:13:24 1591

原创 字符串 22. 括号生成 17. 电话号码的字母组合

696. 计数二进制子串给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例:示例 1 :输入: "00110011"输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现...

2020-03-21 21:43:40 177

原创 整数 7. 整数反转 13.罗马数字转整数 12. 整数转罗马数字

7. 整数反转思路1:使用字符串切片反转代码实现1:class Solution: def reverse(self, x: int) -> int: s = str(x) # 若x < 0,反转之后添加负号,否则直接反转 s = '-' + s[:0:-1] if x < 0 else s[::-1] # 判断是...

2020-03-21 15:04:32 108

原创 数组/列表 1. 两数之和 15. 三数之和 169. 多数元素

1. 两数之和思路:遍历一次数组,将数组的值及其索引放入哈希表。遍历第二次数组,利用b = target - a 的关系寻找b是否存在与哈希表,若存在,且索引与a不同,则返回。代码实现:class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: hash_map =...

2020-03-20 18:33:58 142

原创 字符串(滑动窗口) 3. 无重复字符的最长子串

3. 无重复字符的最长子串思路1:切片实现滑动窗口(时间复杂度O(n2)O(n^2)O(n2))定义一个滑动窗口列表,遍历字符串:若字符不在窗口中,则添加,扩展窗口;若字符已经在窗口中,则将窗口先缩减到窗口列表中字符出现位置的下一字符处,再添加当前字符,保证窗口列表中无重复字符。代码实现1:class Solution(object): def lengthOfLongestS...

2020-03-19 16:48:05 199

原创 字符串 9. 回文数 409. 最长回文串 647. 回文子串 5. 最长回文子串

9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例:示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是...

2020-03-18 19:51:30 235

原创 字符串 696. 计数二进制子串 482. 密钥格式化 242.有效的字母异位词 205. 同构字符串 290. 单词规律

242. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词(字符串长度相等、位置不同)。示例:示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false思路1:排序判断两字符串长度是否相等,若不相等,直接返回Fals...

2020-03-18 15:50:46 183

原创 栈和队列 496. 下一个更大元素I 503.下一个更大元素II 739.每日温度

496. 下一个更大元素I给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例:输入: nums1 = [4,1,2], nums2 ...

2020-03-17 14:09:59 287

原创 栈和队列 20. 有效的括号

20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串(含空字符串)需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。思路:栈+哈希遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,这样遍历完之后,栈应为空。建立哈希表构建左右括号对应关系,用于配对。边界问题:栈为空时,无法执行pop(...

2020-03-16 23:21:40 69

原创 栈和队列 232. 用栈实现队列 225.用队列实现栈 155. 最小栈

232. 用栈实现队列使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。思路:栈为后进先出(LIFO),因此栈的pop()方法和top()方法都是针对栈顶元素,即append()的最后一个元素。而队列的pop()方法和peek()方法是针对...

2020-03-12 19:34:36 115

原创 链表 206. 反转链表 147. 对链表进行插入排序 148. 排序链表(归并排序)

206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:双指针迭代申请两个指针pre和cur,将cur指针指向pre,同时将两个指针一起向前移动。迭代完成时,cur=None,此时pre即为链表头部。代码实现:class Sol...

2020-03-12 12:57:57 107

原创 链表 876. 链表的中间结点 2. 两数相加

2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&gt...

2020-03-12 12:57:19 89

原创 链表 83. 删除排序链表中的重复元素 203. 移除链表元素 19. 删除链表的倒数第N个节点

83. 删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例:输入: 1->1->2->3->3输出: 1->2->3思路:双指针方式考虑特殊情况——链表为空,直接返回。使用cur和l两个指针,cur指针不断往前走,当cur指针和l指针的元素相等时啥都不做;不等时,将此时的cur作为l指针的next,然...

2020-03-09 23:36:30 91

原创 链表 160.相交链表 21.合并两个有序链表 24. 两两交换链表中的节点

160. 相交链表编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:思路:双指针方式将a和b两个链表串联起来,将b链表的尾巴指向a节点的头部,将a节点的尾巴指向b链表的头部。定义两个指针,一个从a链表头出发,一个从b链表头出发,因为是环形的,最终两个链表会相遇,而相遇的节点就是相交的节点。代码实现:class Solution(object): def get...

2020-02-29 23:30:42 159

原创 数据结构与算法(Python)(六)—— 排序算法(5)快速排序

快速排序快速排序(Quicksort),又称划分交换排序(partition-exchange sort),将要排序的数列分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。希尔排序算法的具体运作如下:记录数列第一个元素为中间值,设立两个游标,分别位于数列始末。...

2019-11-25 16:12:06 84

原创 数据结构与算法(Python)(六)—— 排序算法(4)希尔排序

希尔排序希尔排序(Shell Sort)是插入排序的一种,也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法,该方法因DL.Shell于1959年提出而得名。 希尔排序是把数列按一定的下标增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序算法的具体运作如下:...

2019-11-25 10:47:54 107

原创 数据结构与算法(Python)(六)—— 排序算法(3)插入排序

插入排序插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是构建已排序序列,将未排序元素找到已排序序列的相应位置并插入。插入排序在实现上,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。插入排序算法的具体运作如下:将第一个元素视为已排序序列,比较第一个元素与第二个元素,若第二个元素小于第一个元素,则交换。将前两个元素视为已排序序列,比较第三个元素与...

2019-11-24 15:12:04 88

原创 数据结构与算法(Python)(六)—— 排序算法(2)选择排序

选择排序选择排序(Selection sort)是一种简单直观的排序算法。将数列分为未排序序列和已排序序列两部分,在未排序序列中找到最小(大)元素,存放到数列的起始(末尾)位置作为已排序序列的第一个元素,然后,再从剩余未排序序列中继续寻找最小(大)元素,然后放到已排序序列的末尾(起始)位置。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位...

2019-11-24 14:16:15 235

原创 数据结构与算法(Python)(六)—— 排序算法(1)冒泡排序

排序算法排序算法是一种能将一串数据依照特定顺序进行排列的一种算法。一、排序算法的稳定性稳定排序算法会让原本有相等键值的纪录维持相对次序,也就是如果一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。例如,将以下的数对将要以他们的第一个数字来排序。(4, 1) (3, 1) (3, 7) (5, 6)在这个状况下...

2019-11-24 13:15:37 148

原创 在Office2019中使用MathType——适用于MathPage.wll或MathType.dll文件找不到

首先附上Mathtype 6.9简体中文版下载地址:http://www.mathtype.cn/xiazai.html本文基于安装好MathType以及office2019后进行操作,以64位为例。Word准备好两个MathType文件:C:\Program Files (x86)\MathType\MathPage\64\MathPage.wllC:\Program Files (...

2019-11-21 19:52:01 19463 21

原创 爬虫初阶(六)—— Scrapy框架(1)scrapy的基础概念

1. Scrapy框架是什么?Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要编写少量的代码,就能够快速的抓取数据,Scrapy 使用了 Twisted异步网络框架,可以加快我们的下载速度。异步与非阻塞异步:调用在发出之后,这个调用就直接返回,不管有无结果。非阻塞:关注的是程序在等待调用结果(消息,返回值)时的状态,指在不能立刻得到结果之前,该调用不会阻塞当...

2019-11-05 16:04:24 184

原创 爬虫初阶(五)—— 动态HTML与selenium

1. 动态HTML什么是动态HTML2. SeleniumSelenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。2.1 selenium 安装使用selenium需要安装两部分内...

2019-11-05 15:43:42 130

原创 爬虫初阶(四)—— 百思不得姐多线程爬虫案例

import refrom parse_url import parse_urlimport requestsimport timeimport threadingfrom queue import Queuestart = time.time()class Neihan_Spider(object): def __init__(self): self.u...

2019-11-05 10:13:15 204

原创 数据结构与算法(Python)(五)—— 栈与队列

一、栈1. 栈的定义栈(stack),或堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, L...

2019-11-04 22:06:14 128

原创 数据结构与算法(Python)(四)—— 顺序表和链表(4)单向循环链表

4. 单向循环链表单向循环链表是单链表的一个变形,链表中最后一个节点的next域不再为None,而是指向链表的头节点。4.1 节点实现class Node(object): def __init__(self, elem): self.elem = elem self.next = None4.2 链表实现单向循环链表可执行的操作is_em...

2019-11-04 20:42:32 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除