自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 刷题小分队第一周:递归。

1. 不同路径要不超时的话就得加一个缓存:cach递归出口:一直下,一直右,则说明i == 0或者j == 0则找到一条路径;等价关系:左的路径数+右的路径数定义:在i,j坐标下可以得到的路径数。 def uniquePaths(self,m, n): def helper(i, j): if i==0 or j==0: return 1 if cache[i][j]: return cache[

2021-05-14 22:07:53 195

转载 并查集

并查集模板class UnionFind: def __init__(self): """ 记录每个节点的父节点 """ self.father = {} def find(self,x): """ 查找根节点 路径压缩 """ root = x while self.father[root] != None:

2021-01-07 14:25:31 195

原创 leetcode——编辑距离

两个字符串如何进行删除,替换和插入,最少执行次数class Solution: def oneEditAway(self, first: str, second: str) -> bool: l1=len(first) l2=len(second) dp=[[0]*(l1+1)for _ in range(l2+1)] for i in range(1,l2+1): dp[i][0]=i

2020-10-28 19:57:15 227

原创 leecode——最小匹配子串

class Solution: def minWindow(self, s: str, t: str) -> str: import collections cnt = collections.Counter(t) ans = '' n = 0 # 当前我满足了 t 中的字母的种数 l = 0 for r, ch in enumerate(s): if ch not in c

2020-08-25 22:58:27 256

原创 leecode——二分查找大全

二分查找大全class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: if not nums:return [-1,-1] l=len(nums) def zuo(nums,target): left,right=0,l-1 while left<=right:

2020-08-24 23:04:46 158

转载 python内置排列组合函数

python内置函数-排列组合函数product 笛卡尔积  (有放回抽样排列)permutations 排列  (不放回抽样排列)combinations 组合,没有重复  (不放回抽样组合)combinations_with_replacement 组合,有重复  (有放回抽样组合)>>> import itertools>>> for i in itertools.product('ABCD', repeat = 2):... print(i)

2020-08-23 10:36:46 1394

原创 leecode——三个数的最大最小值

def max_min(x, y, z): max = min = x if y > max: max = y else: min = y if z > max: max = z else: min = z return max, min

2020-08-23 10:28:17 108

原创 leetcode——牌不能是顺子

class Solution: def isStraight(self, nums: List[int]) -> bool: repeat = set() ma, mi = 0, 14 for num in nums: if num == 0: continue # 跳过大小王 ma = max(ma, num) # 最大牌 mi = min(mi, num) # 最小...

2020-07-10 22:47:57 137

原创 leetcode——和为一个数

class Solution: def findContinuousSequence(self, target: int) -> List[List[int]]: # 初始化窗口指针和输出列表 i, j, res = 1,2, [] # 滑动窗口的右边界不能超过target的中值 while j <= target//2 + 1: # 计算当前窗口内数字之和 cur_...

2020-07-09 17:30:18 217 1

原创 快速排序

模板def quickSort(arr,left,right): i,j=left,right pivot=arr[left] while i<j: while i<j and arr[i]<pivot: arr[j]=ar[i] while j>i and arr[j]>pivot: arr[i]=arr[j] arr[i]=pivot quickSort(arr,left,i-1) quickSort(arr,i+1,right)..

2020-06-28 21:49:16 75

原创 leetcode——全排列

字符串的全排列代码class Solution: def permutation(self, s: str) -> List[str]: if not s: return s=list(sorted(s)) res=[] def helper(s,tmp): if not s: res.append(''.join(tmp)) for i,char in enumerate(s)

2020-06-28 21:21:23 138

原创 先验概率和后验概率

**以下是原答案:一句话概括,先验概率:执因求果。后验概率:知果求因。极大似然概率:知果求最可能的原因。例子: 已知车祸有一定概率会导致堵车,此处车祸是因,堵车是果。P(堵车) 是先验概率。P(车祸|堵车)是后验概率。我们有以下三个随机事件A 警察查酒驾B 下班高峰C 车祸三个事件都会导致堵车,在已知堵车的情况下,哪个事件最可能发生,即是极大似然估计,即求 argmax(P(A|堵车),P(B|堵车),P(C|堵车))。argmax返回A,B,C三者中使得概率最大的事件。**...

2020-06-17 14:12:25 211

原创 leetcode——查找存在的数字

直接找一个点(右上角)就可以排除行或列了。首先选取右上角数字,等于查找数字,就返回true,大于的话,剔除列,小于的话剔除行。不断地剔除行和列,每次都查右上角,直至查到class Solution: def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool: if len(matrix) and len(matrix[0]): hang=0

2020-06-16 22:32:58 168

原创 leetcode——找出超过一半数组长度的数

**方法一:正常思路可以先排序,再取中间值,中间值就是数组中出现次数超过一半的数字。方法二:不正常思路的话,用target记录上一次访问的值,count表明当前值出现的次数,如果下一个值和当前值相同那么count++;如果不同count–,减到0的时候就要更换新的target值了,因为如果存在超过数组长度一半的值,那么最后target一定会是该值。可以这样理解,count的自加和自减就是在描述一种抵消关系,由于超过一半的出现次数,导致最后的target一定会是该值。(这种方法的时间复杂度自然会小些)c

2020-06-16 22:14:16 340

原创 leetcode——礼物最大值

在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物这个算法,又像 DP 又像贪心算法。我们利用一个比原格子多一行,一列的表格反向计算从每个格子出发的最大值。多加的

2020-06-14 22:30:58 278

原创 leetcode——数位问题

class Solution: def findNthDigit(self, n: int) -> int: digit, start, count = 1, 1, 9 while n > count: # 1. n -= count start *= 10 digit += 1 count = 9 * start * digit n...

2020-06-13 22:48:04 188

原创 leetcode——数据流中的中位数(大小堆)

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例 1:输入:[“Med

2020-06-13 22:31:48 272

原创 python基础

深浅拷贝:浅的是赋值地址,b=a地址一样,内容一样,一起变深的是重新开辟内存把内容拿进来b=copy.deepcopy(a),不会一起变,地址不一样copy.copy()只深拷贝一层,可以判断是否可以变的对象类中的__num是类私有化的值,只能在类中使用;_单下划线是类对象和子类可以使用,只能在一个模块中可以使用(from a import *是不可以使用)_后置下划线是避免与python关键词冲突;property:对属性的设置,装饰器的关键字可以迭代!=迭代对象迭代对象:tuplen

2020-06-13 22:26:37 95

原创 leetcode——序列化二叉树

请实现两个函数,分别用来序列化和反序列化二叉树。示例:你可以将以下二叉树:1/ 2 3/ 4 5序列化为 “[1,2,3,null,null,4,5]”前序遍历def deserialize(self, data): """Decodes your encoded data to tree. :type data: str :rtype: TreeNode """ if not d

2020-06-11 22:39:53 218

原创 leetcode——单调栈

class Solution: def dailyTemperatures(self, T: List[int]) -> List[int]: l=len(T) stack=[] ans=[0]*l for i in range(l): while stack and T[i]>T[stack[-1]]: idx=stack.pop() ans[...

2020-06-11 22:27:43 104

原创 leetcode——前序和中序构建树

class Solution(object): def buildTree(self, preorder, inorder): """ :type preorder: List[int] :type inorder: List[int] :rtype: TreeNode """ if not preorder: return None #创建当前节点

2020-06-09 23:11:01 157

原创 leetcode——数字翻译

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”动态规划问题class Solution: def translateNum(self, num: int)

2020-06-09 22:04:52 363

原创 leetcode——遍历树的三种遍历的统一形式

2020-06-08 21:13:09 144

原创 leetcode——限制求和

求1+2+…+n,只能用逻辑运算和加减法

2020-06-07 22:20:19 101

原创 leetcode——

**思考过程要想在O(1)O(1)时间内做到取出最大值,我们可以想到,能否用一个cur_max的变量,来记录并且比较每一次新入队的value,这个想法是极好的,但是如果队列是[4,3]这个样子,cur_max只会记下4是最大的,当调用一次pop_front()后,此时队列为[3],而cur_max没有变化,所以单个变量记录最大值行不通。进一步地我们可以想到,一个变量不行,那我直接用一个辅助队列记录值OK不OK呢?答案是OK的。我们让辅助队列的数从大到小排列好,要找最大值直接返回辅助队列的头部即可,同时

2020-06-07 21:50:22 85

原创 leetcode——数字出现次数

先验知识给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。这是一道非常经典的题目,用 异或 可以轻松解决 —— 所有的数字异或起来,就是答案。为什么呢?我们先来看下异或的性质(数学里异或的符号是 ⊕):我们可以根据 交换律、 结合律 将相同的数字优先两两进行异或运算。此时根据 归零率 ,每两个相同的数字都变成了 0,再根据 恒等率 ,把式子里所有的 0 去了,此时就只剩下只出现一次的那个数了!class Solution: de

2020-06-06 22:44:24 526

原创 leetcode——缺失数组

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8两种方法:一种是hash法,一种是二分法(排序搜索直接二分法)class Solution: def missingNumber(self, nums: List[int]) -> int:

2020-06-06 22:25:08 132

原创 leetcode——公共节点

输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8

2020-06-05 22:31:18 158

原创 leetcode——逆序数个数

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000...

2020-06-05 21:39:26 603

原创 leetcode——移0,剔除重复元素,盛水容器

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来源:力扣(LeetCode)第三种方法:索引记住非0的数,然后进行交换class Solution { public void moveZeroes(int[] nums) { int l=nums.length; int

2020-06-04 15:51:10 133

原创 leetcode——排序求解

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0来源:力扣(LeetCode)链接:https://leetcode-cn.com

2020-06-03 23:08:55 139

原创 leetcode(二)

请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个有效整数字

2020-06-02 22:52:03 142

原创 leetcode(一)

求两个有序数组的中位数,log(m+n)这个题目可以归结到寻找第k小(大)元素问题,思路可以总结如下:取两个数组中的第k/2个元素进行比较,如果数组1的元素小于数组2的元素,则说明数组1中的前k/2个元素不可能成为第k个元素的候选,所以将数组1中的前k/2个元素去掉,组成新数组和数组2求第k-k/2小的元素,因为我们把前k/2个元素去掉了,所以相应的k值也应该减小。另外就是注意处理一些边界条件问题,比如某一个数组可能为空或者k为1的情况```def findMedianSortedArrays(sel

2020-06-01 22:58:15 59

原创 extend个append

就是说extend添加的是一个对象,并且将对象里面的元素一个一个迭代添加;而append是添加任何数据类型,保持原来数据类型的格式

2020-05-30 19:40:13 100

原创 计算机自学导论

2020-05-02 11:21:04 84

原创 MySQL的安装

[mysqld]# 设置3306端口port=3306# 自定义设置mysql的安装目录,即解压mysql压缩包的目录basedir=E:\MySQL\mysql-8.0.15-winx64# 自定义设置mysql数据库的数据存放目录datadir=E:\MySQL\mysqlDate# 允许最大连接数max_connections=200# 允许连接失败的次数,这是为...

2020-04-19 21:36:44 640

原创 学习笔记(140):Python 面试100讲(基于Python3.x)-用递归的方法绘制带绿叶的小树...

本课程搜集了各大互联网公司的Python面试题以及类似的题目。课程体系包括Python语言本身的知识、Python SDK、Web、Python爬虫以及算法等内容。所以的源代码都使用Python3.x编写。Python相关知识包括基本语法、正则表达式、字符串、数据库、网络、Web等。算法包括了一些出镜率高的内容、如与链表、树、数组相关的算法。...

2020-03-22 20:18:18 72

原创 学习笔记(139):Python 面试100讲(基于Python3.x)-青蛙跳台阶

本课程搜集了各大互联网公司的Python面试题以及类似的题目。课程体系包括Python语言本身的知识、Python SDK、Web、Python爬虫以及算法等内容。所以的源代码都使用Python3.x编写。Python相关知识包括基本语法、正则表达式、字符串、数据库、网络、Web等。算法包括了一些出镜率高的内容、如与链表、树、数组相关的算法。...

2020-03-22 20:11:25 171

原创 学习笔记(138):Python 面试100讲(基于Python3.x)-二叉树中和为某一值的路径

本课程搜集了各大互联网公司的Python面试题以及类似的题目。课程体系包括Python语言本身的知识、Python SDK、Web、Python爬虫以及算法等内容。所以的源代码都使用Python3.x编写。Python相关知识包括基本语法、正则表达式、字符串、数据库、网络、Web等。算法包括了一些出镜率高的内容、如与链表、树、数组相关的算法。...

2020-03-22 20:09:02 82

原创 学习笔记(137):Python 面试100讲(基于Python3.x)-整数区间中1出现的次数

本课程搜集了各大互联网公司的Python面试题以及类似的题目。课程体系包括Python语言本身的知识、Python SDK、Web、Python爬虫以及算法等内容。所以的源代码都使用Python3.x编写。Python相关知识包括基本语法、正则表达式、字符串、数据库、网络、Web等。算法包括了一些出镜率高的内容、如与链表、树、数组相关的算法。...

2020-03-22 19:55:45 89

空空如也

空空如也

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

TA关注的人

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