自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一点一滴铺就人生

以兴趣为动力,为自己拼出一番天地

  • 博客(383)
  • 资源 (1)
  • 收藏
  • 关注

原创 前缀和相关:区域和检索 - 数组不可变、二维区域和检索 - 矩阵不可变...

给定一数组A。前缀和:新建一数组B,数组中每一项B[i]保存A中[0…i]的和;后缀和:新建一数组B,数组中每一项B[i]保存A中[i…n-1]的和;前缀积:新建一数组B,数组中每一项B[i]保存A中[0…i]的积;后缀积:新建一数组B,数组中每一项B[i]保存A中[i…n-1]的积;一、区域和检索 - 数组不可变class NumArray: def __init__(self, nums: List[int]): self.sums, pre = [0],

2021-03-01 00:39:40 40

原创 python进制转换编程题

1、十进制转换成任意进制的代码方法非常简单,就是利用辗转相除法, 保存商和余数,直到商为0为止,再将余数反转。def f(n, x): # n为待转换的十进制数,x为机制,取值为2-16 a, b = '0123456789ABCDEF', [] while True: s = n // x # 商 y = n % x # 余数 b.append(y) if not s: break n = s

2021-02-24 15:49:03 124

原创 多线程相关:按序打印、交替打印FooBar、交替打印字符串

文章目录一、按序打印二、交替打印FooBar三、交替打印字符串(不懂)一、按序打印from threading import Lockclass Foo: def __init__(self): self.firstJobDone = Lock() self.secondJobDone = Lock() self.firstJobDone.acquire() self.secondJobDone.acquire() #

2021-02-17 20:21:52 86 1

原创 布隆过滤器及LRU Cache的实现

文章目录一、Bloom Filter二、LRU Cache1、OrderedDict实现(面试建议)2、哈希 + 双向链表(了解)一、Bloom Filter它是什么?:一个很长的二进制向量和一系列随机映射函数。用途:布隆过滤器可以用于检索、一个元素是否在一个集合中。优点:是空间效率和查询时间都远远超过一般的算法,缺点:是有一定的误识别率和删除困难。from bitarray import bitarrayimport mmh3class BloomFilter: def __in

2021-02-11 14:53:41 158

原创 位运算相关:2的幂、翻转图像、颠倒二进制位、N皇后II、比特位计数 ...

文章目录一、位1的个数二、2的幂三、颠倒二进制位(经典)四、N皇后II一、位1的个数class Solution: def hammingWeight(self, n: int) -> int: count = 0 while n: n = n & (n - 1) count += 1 return count二、2的幂class Solution: def isP

2021-02-10 22:40:29 167 2

原创 排序相关:数组的相对排序、最小的k个数(快排)、合并区间、翻转对 ...

文章目录一、数组的相对排序(计数排序)二、合并区间(单纯排序)三、最小的k个数(快排)四、翻转对(归并排序)一、数组的相对排序(计数排序)# 我们使用tmp数组对arr1中每个元素进行计数排序# 然后遍历arr2先把这个顺序的元素依次存入res,并把tmp中当前存入元素的值改为0# 最后遍历tmp数组,把剩下元素按升序存进resclass Solution: def relativeSortArray(self, arr1: List[int], arr2: List[int]) -&g

2021-02-09 20:31:46 86

原创 九大排序算法详解

文章目录一、选择排序二、插入排序(链表实现)三、冒泡排序四、快速排序五、归并排序六、堆排序一、选择排序小凰凰是个不甘平凡的人,因此选择排序、冒泡排序的实现,也不愿采用随大流的双层循环的设计,因此使用了递归去实现!# 核心思想:其实就是对外层循环使用递归替代了,多了一个start参数去控制import mathdef choice_sort(nums, start): # terminator if start == len(nums) - 1: return nums

2021-02-09 11:00:28 129

原创 字典树、并查集相关:实现Trie、搜索推荐系统、朋友圈、被围绕的区域(未做) ...

文章目录一、字典树1、实现Trie2、单词搜索3、单词搜索II4、搜索推荐系统二、并查集1、省份数量2、岛屿数量3、被围绕的区域(暂时不会)一、字典树1、实现Trieclass Trie: def __init__(self): """ Initialize your data structure here. """ self.root = {} self.END_OF_WORD = '#' def

2021-02-07 23:28:52 123 1

原创 动态规划套题:零钱兑换、完全平方数

一、零钱兑换1、自顶向下class Solution: def coinChange(self, coins: List[int], amount: int) -> int: memo = {} def dp(n): # 记忆化查表 if n in memo: return memo[n] # 两个递归终止条件 if n == 0: return 0

2021-02-06 01:23:58 48

原创 动态规划套题:不同路径

文章目录一、不同路径1、自顶向下2、自底向上3、组合数学二、不同路径II1、自顶向下2、自底向上一、不同路径1、自顶向下class Solution: def uniquePaths(self, m: int, n: int) -> int: # dp 自顶向下 dp = [[0 for _ in range(n)] for _ in range(m)] def dfs(i,j): if i >= m or

2021-02-04 22:32:23 50

原创 动态规划相关:三角形最小路径和

文章目录一、爬楼梯1、自顶向下2、自底向上二、三角形最小路径和1、自顶向下2、自底向上三、完全平方数一、爬楼梯题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。1、自顶向下class Solution: memo = {1:1,2:2} def climbStairs(self, n: int) -> int: # dp 自顶向下 -> 记忆化递归

2021-02-04 22:30:04 49

原创 二分查找相关:x的平方根、搜索旋转排序数组、搜索二维矩阵 ...

文章目录一、x的平方根1、二分查找法2、牛顿迭代法二、搜索旋转排序数组1、还原数组+二分查找(不推荐)2、二分查找三、寻找旋转排序数组中的最小值四、搜索二维矩阵一、x的平方根建议: 再做下leetcode中的有效的完全平方数一题!1、二分查找法class Solution: def mySqrt(self, x: int) -> int: l, r = 0, x while l <= r: mid = (l + r)//2

2021-02-02 21:46:46 40

原创 贪心相关:柠檬水找零、买卖股票的最佳时机、分发饼干、跳跃游戏 ...

文章目录一、柠檬水找零二、买卖股票的最佳时机三、买卖股票的最佳时机II四、分发饼干五、模拟行走机器人(困难)六、跳跃游戏七、跳跃游戏II(困难)一、柠檬水找零注意:是按顺序收取,不是先把所有钱都收上来,然后再给别人分别找钱class Solution: def lemonadeChange(self, bills: List[int]) -> bool: five = ten = 0 for i, v in enumerate(bills):

2021-02-01 19:30:51 71

原创 DFS、BFS相关:二叉树的层序遍历、岛屿数量、扫雷游戏、单词接龙 ...

文章目录一、二叉树的层序遍历1、BFS + 二元组记录level2、BFS二、最小基因变化三、括号生成四、在每个树行中找到最大值五、岛屿数量六、扫雷游戏七、单词接龙八、单词接龙ii一、二叉树的层序遍历1、BFS + 二元组记录levelclass Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root: return [] deque, res = co

2021-01-28 22:02:43 64 1

原创 分治与回溯相关:Pow(x,n)、多数元素、至少有K个重复字符的最长子串、N皇后 ...

一、Pow(x,n)题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。class S

2021-01-27 13:29:34 75

原创 递归相关:约瑟夫环、括号生成、二叉树的最小深度、二叉搜索树、组合、全排列 ...

一、爬楼梯题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。class Solution: def climbStairs(self, n: int) -> int: if n <= 3: return n return self.climbStairs(n - 1) + self.climbStairs(n - 2)二、括号生成题目:数字 n 代表生成括号的对数,

2021-01-24 21:11:41 95

原创 堆相关:最小的k个数、前k个高频元素、丑数

还有一题见:滑动窗口最大值一、最小的k个数二、前k个高频元素三、丑数

2021-01-23 18:48:47 53

原创 树遍历相关:二叉树的遍历、N叉树的遍历、N叉树的层序遍历

文章目录一、二叉树的中序遍历1、递归法(推荐)2、迭代法(了解)---中序遍历3、迭代法(了解)---前序遍历4、迭代法(了解)---后序遍历二、N叉树的遍历1、递归法2、迭代法三、N叉树的层序遍历一、二叉树的中序遍历题目:给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]1、递归法(推荐)很简单,就不说后序和前序了!class Solution: def inorderTraversal(self

2021-01-20 16:27:47 48

原创 hash表相关:有效的字母异位词、字母异位词分组、两数之和、数组的度

文章目录一、有效的字母异位词1、排序2、常规办法:采用字典3、优化字典法:采用defaultdict二、字母异位词分组三、两数之和1、字典法2、字典法优化一、有效的字母异位词题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例2:输入: s = "rat", t = "car"输出: false说明: 你可以假设字符串只包含小写字母。1、排序class So

2021-01-19 20:15:29 42 1

原创 滑动窗口相关:滑动窗口的最大值、最大连续1的个数 III、爱生气的书店老板

1、暴力法:两层循环# 法1: 两层循环# 外层循环:for each(len(nums) - k + 1)遍历各个窗口的初始元素# 内层循环获取该窗口,并求max_elementclass Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: if not nums: return nums num = [] for i in range(

2021-01-19 12:44:51 58

原创 单调栈相关:每日温度、下一个更大元素、柱状图中最大的矩形、接雨水

1、暴力法:枚举左右边界,超出时间间隔# 枚举左右边界,并记录最小height,计算这个边界的矩形面积class Solution: def largestRectangleArea(self, heights: List[int]) -> int: # 1、暴力法1: 枚举左右边界,超出时间间隔 h, max_area = len(heights), 0 # 注意外层循环是h,只是重复计算了一下罢了,对max_area不影响

2021-01-19 11:13:53 52 1

原创 栈相关:有效的括号、最小栈、用栈实现队列、波兰表达式求值及其相互转换 ...

1、栈如果括号种类多了,if else就会显得很臃肿!class Solution: def isValid(self, s: str) -> bool: # 采用栈(推荐) if s == '': return True stack = [] for c in s: if c == '(': stack.append(')')

2021-01-18 20:21:26 56

原创 数组相关:寻找数组的中心索引、合并两个有序数组、旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]1、python自带的双端队列class Solution: def rotate(self, nums: List[int], k: int) ->

2021-01-18 16:03:21 39

原创 链表相关:环形链表II、相交链表、两两交换链表中的节点、k个一组翻转链表 ...

一、Leetcode 142:环形链表IIclass Solution: def detectCycle(self, head: ListNode) -> ListNode: fast = slow = head while fast and fast.next: fast = fast.next.next slow = slow.next if fast == slow:

2021-01-18 15:46:45 40

原创 两数之和、三数之和、四数之和

一、两数之和1、暴力法class Solution(object): def twoSum(self, nums, target): for i in range(0, len(nums) - 1): for j in range(i + 1,len(nums)): if nums[i] + nums[j] == target: return [i,j]2、枚举+hash表二、三

2021-01-18 15:07:57 48

原创 双指针相关:移动零、盛最多水的容器 ...

1、low版双指针class Solution: def moveZeroes(self, nums: List[int]) -> None: for i in range(0,len(nums) - 1): if nums[i] == 0: for j in range(i + 1, len(nums)): if nums[j] != 0:

2021-01-18 14:42:10 30

原创 Go语言基础(九):文件操作

文章目录一、打开和关闭文件二、读取文件1、file.Read()(1)基本使用(2)循环读取2、bufio按行读取文件3、ioutil读取整个文件三、文件写入1、Write和WriteString2、bufio.NewWriter3、ioutil.WriteFile一、打开和关闭文件os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。package mainimport ( "fmt" "os")func main(

2020-10-11 14:19:36 161 1

原创 Go语言基础(八):包

包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt、os、io等。一、定义包一个包可以简单理解为一个存放.go文件的文件夹。 该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该文件归属的包。package 包名注意事项:一个文件夹下面直接包含的文件只能归属一个package,同样一个package的文件不能在多个文件夹下。包名可以不和文件夹的名字一样,包名不能包含 - 符号。包名为main的包为应用程序的入口包,这种包

2020-10-11 13:30:19 226

原创 Go语言基础(七):结构体

文章目录一、类型别名和自定义类型1、自定义类型2、类型别名3、类型定义和类型别名的区别二、结构体1、结构体定义2、结构体实例化(1)基本实例化(2)匿名结构体(3)创建指针类型结构体(4)取结构体的地址实例化3、结构体初始化4、结构体内存布局5、面试题6、构造函数7、方法和接收者8、任意类型添加方法9、结构体的匿名字段10、嵌套结构体11、结构体的组合12、结构体字段的可见性13、结构体与JSON序列化14、结构体标签15、结构体和方法补充知识点Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的

2020-10-09 18:31:39 184

原创 Go语言基础(六):指针

文章目录1、指针地址和指针类型2、指针取值3、new和make(1)new(2)make(3)new与make的区别Go语言中的指针不能进行偏移和运算,因此Go语言中的指针操作非常简单,我们只需要记住两个符号:&(取地址)和*(根据地址取值)。要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。1、指针地址和指针类型每个变量在运行时都拥有一个地址,这个地址代

2020-10-08 20:11:44 120

原创 Go语言基础(五):函数

文章目录一、函数定义二、函数的调用三、参数与返回值1、参数(1)类型简写(2)可变参数2、返回值(1)多返回值(2)返回值命名(3)返回值补充四、变量作用域1、全局变量2、局部变量(1)函数局部变量(2)语句块局部变量五、函数类型与变量1、函数类型2、函数类型变量六、高阶函数1、函数作为参数2、函数作为返回值七、匿名函数和闭包1、匿名函数2、闭包八、defer语句1、defer特性2、defer执行时机3、defer经典案例九、Go的内置函数函数是组织好的、可重复使用的、用于执行指定任务的代码块。一、函

2020-10-08 17:18:24 161

原创 Go语言基础(四):map

文章目录一、map的定义二、map基本使用1、判断某个键是否存在2、map的遍历3、使用delete()函数删除键值对4、按照指定顺序遍历map5、元素为map类型的切片6、值为切片类型的map三、练习题Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。一、map的定义map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。// map的定义map[KeyType]ValueType/* KeyType:表示键的类型。Va

2020-10-08 14:58:40 151

原创 Go语言基础(三):数组与切片

文章目录一、数组1、数组的初始化(1)方法一(2)方法二(3)方法三2、数组的遍历3、多维数组(1)二维数组的定义(2)二维数组的遍历4、数组是值类型5、练习题二、切片一、数组数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:// 定义一个长度为3元素类型为int的数组avar a [3]int数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变1、数组的初始化(1)方法一 var testArr

2020-10-07 20:15:04 171

原创 Go语言基础(二):流程控制

文章目录一、if else(分支结构)二、for(循环结构)1、for循环变种2、for range(键值循环)三、switch case语句四、goto(跳转到指定标签)五、break(跳出循环)六、continue(继续下次循环)七、练习题流程控制是每种编程语言控制逻辑走向和执行次序的重要部分Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。一、if else(分支结构)1、if条件判断基本写法if 表达式1 {

2020-10-07 16:58:10 134

原创 Go语言基础(一):变量与常量、基本数据类型、运算符

文章目录一、变量与常量1、标识符与关键字2、变量(1)批量声明(2)变量的初始化(3)类型推导(4)短变量声明(5)匿名变量(6)注意事项3、常量(1)iota常量计数器二、基本数据类型1、整型2、浮点型3、布尔值4、字符串(1)字符串中转义符的使用(2)多行字符串(3)字符串的常用操作(4)byte和rune类型(5)修改字符串5、类型转换6、Printf打印各个基本类型的值三、运算符1、算数运算符2、关系运算符3、逻辑运算符4、赋值运算符一、变量与常量1、标识符与关键字在编程语言中标识符就是程序员

2020-10-06 21:25:21 189

原创 Python面试准备

文章目录8、列举五个PEP8规范13、ascii、unicode、gbk、utf8的区别?16、列举 Python2和Python3的区别?21、字符串、列表、元组、字典每个常用的5个方法?24、lambda表达式格式以及应用场景?27、深浅copy36、列举你用过的八个模块37、列举面向对象中带爽下划线的特殊方法38、如何判断是函数还是方法?80、简述 yield和yield from关键字。-------------网络编程和并发--------------10、IO多路复用的作用?并列举实现机制及区别

2020-10-06 17:36:12 206

原创 史上最详细的输入url的流程透析

文章目录1、网络传输流程3、负载均衡调度器(LVS、Nginx)4、iptables防火墙5、Tcp三次握手流程(四次断开流程)6、http协议重要参数7、https协议流程8、Django服务器请求流程讲解9、浏览器解析文件流程10、浏览器渲染流程请求—〉dns解析—〉负载均衡调度器(将请求调度到某台服务器)—〉防火墙—〉tcp三次握手—〉http请求(或https)—〉服务端处理请求,返回请求的文件—〉浏览器解析文件—〉浏览器渲染页面1、网络传输流程(1)先找网关进行路由,找到目标主机所在的局域网

2020-09-24 23:27:48 76

原创 框架面试准备

文章目录一、1、MTV与MVC区别2、配置模版路径3、数据库怎么连接?二、1、path、url、re_path的区别2、分组、有名分组的做法与区别3、反向解析在模板和后端的python文件中怎么做?4、路由分发是什么?怎么做?为什么这么做?5、Django对于尾斜杠的处理三、1、request对象有哪些属性与方法?在哪里会用到?2、视图函数响应的三种方法四、1、模板语言2、模板继承五、1、记录的增删改查(单表)2、model常见的字段类型及参数六、1、一对一、一对多、多对多字段怎么建立?说下它们的特点2、跨

2020-09-22 18:22:58 80

原创 前端面试知识点准备

一、http协议https://blog.csdn.net/weixin_44571270/article/details/106857012提到http的无状态特点,解决无状态技术为cookie、session:https://blog.csdn.net/weixin_44571270/article/details/107676591二、浮动布局与清除浮动https://blog.csdn.net/weixin_44571270/article/details/106891724三、js基础

2020-09-22 11:51:59 89

原创 linux面试知识点准备

1、linux开机启动流程1.开机BIOS自检 (检查CPU、硬盘等信息)2.MBR引导 (主分区引导【读取0磁道0柱面1扇面的前446字节】)3.GRUB引导 (确定加载某个系统【GRUB是GUN项目的多操作系统启动程序】)4.加载内核kernal信息(cat /proc/version或uname -a即可查看内核版本信息)5.运行init进程 (Linux启动的第一个进程【ps -ef | grep /sbin/init】)6.读取inittab (Linux启动的第一个进程【ps -ef

2020-09-20 18:08:36 184

wordpress-5.0.2-zh_CN.tar.gz

wordpress-5.0.2-zh_CN.tar.gz

2020-05-10

空空如也

空空如也

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

TA关注的人 TA的粉丝

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