- 博客(61)
- 收藏
- 关注
原创 【排序】functools
最近遇到两道题,1.对元素是链表的list排序2.根据元素的频率对list排序都需要自定义【比较函数】,定义完比较函数后,选一种排序方法就可以了,但python的话,还可以直接用内置的functools,如果笔试的时候,可以直接调。
2022-09-19 10:25:50 323
原创 【最长递增系列】动态规划法和贪心法
导言:本文总结最长递增子序列、最长递增区间、最长数对链,本质上都是最长递增子序列,扩展到区间、数对,解法还是一致的。动态规划法复杂度是O(n^2),双层循环,在这里动态规划没有节省时间,不是最优解,贪心法需要排序+遍历,排序的时间复杂度是O(nlogn)。在做题时,往往先想到动态规划法,但是动态规划法特别容易超时。另外,在一维的时候,贪心+二分查找,实现上,细节较多,容易出错。
2022-09-04 10:09:04 320
原创 【动态规划之背包问题】子集背包--目标和
494. 目标和 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/target-sum/Step1.转换为背包问题:Step2.异常情况判定:neg为非负 整数sums-target>0=0 and (sums-target)%2==0Step3. j开始的位置:0class Solution(object): def findTargetSumWays(self, nums, targe.
2022-04-05 15:05:04 410
原创 【回文串问题】分割回文串
Leetcode:131. 分割回文串 - 力扣(LeetCode) (leetcode-cn.com)分为两部分:1.动态规划确定子串是否是回文串2.枚举子集时间复杂度:O(n*2^n)空间复杂度:O(n^2)代码如下:class Solution(object): def partition(self, s): """ :type s: str :rtype: List[List[str]] """
2022-03-26 09:13:42 374
原创 【动态规划】鸡蛋掉落
887. 鸡蛋掉落 - 力扣(LeetCode) (leetcode-cn.com)时间复杂度:O(KN)空间复杂度:O(k)代码如下:class Solution(object): def superEggDrop(self, k, n): """ :type k: int :type n: int :rtype: int """ dp=[0]*(k+1) m=
2022-03-26 09:07:33 157
原创 【动态规划】打家劫舍
1.简单版:数组198. 打家劫舍 - 力扣(LeetCode) (leetcode-cn.com)时间复杂度:O(n)空间复杂度:O(n)(可优化到O(1))class Solution(object): def rob(self, nums): """ :type nums: List[int] :rtype: int """ dp=[0 for _ in nums] dp[0]=n
2022-03-15 23:30:36 312
原创 【面试题】拼接字符串
今天面试官给出了一道原创题,判断字符串s是否能够由arr中的元素组合拼接组成。输入示例:s="aabbcc"arr=["a","abb","c"]其实还挺简单的递归法的题目,太紧张然后写错边界条件。递归法两个注意点:1.字符串的边界条件2.遍历过程中只要有一次true,最后结果就是true代码如下:...
2022-03-14 16:14:32 451
原创 5. 最长回文子串
5. 最长回文子串 - 力扣(LeetCode) (leetcode-cn.com)从中间开始扩散两种情况:1.回文串长度为奇数2.回文串长度为偶数遍历字符串,从每个字符为中心扩散,寻找该点为中心时的最长回文串取所有情况的最大值时间复杂度:O(n)空间复杂度:O(1)代码如下:class Solution(object): def longestPalindrome(self, s): """ :type s: s
2022-03-13 10:45:43 330
原创 【回溯法】二叉树中的最大路径和
Leetcode:124. 二叉树中的最大路径和 - 力扣(LeetCode) (leetcode-cn.com)刚开始想的有点复杂,其实就是左最大路径+根节点.val+右最大路径,用暴力回溯就可以解决。如果暴力回溯的话,每个节点访问一次,在每个节点计算一次,那么时间复杂度为O(N),空间复杂度也为O(N)。每个节点处需要回传的是,当前节点作为路径中的边路上的一点时,这条分支最大路径和每个节点时即遍历时需要全局更新的是,当前计算得到的最大路径和是否是全局最大,如是,则更新代码
2022-03-09 08:07:28 240
原创 【二分查找】两个两次二分查找问题
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode) (leetcode-cn.com)1.双指针class Solution(object): def searchRange(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ left,ri..
2022-02-27 14:49:05 234
原创 【BFS】打开转盘锁
752. 打开转盘锁 - 力扣(LeetCode) (leetcode-cn.com)1.BFS按找最短路径的方法,先BFS穷举,然后每一层进行判断。代码如下:运行结果超时class Solution(object): def openLock(self, deadends, target): """ :type deadends: List[str] :type target: str :rtype: .
2022-02-24 10:52:37 174
原创 Leetcode刷题小结
1.动态规划穷举问题-存在重叠子问题-存在最优子结构状态转移方程用于求解最值问题2.回溯法决策树的遍历过程1.路径2.选择列表3.结束条件纯暴力穷举,没有重叠子结构3.BFS寻找最短路径,代价是空间复杂度...
2022-02-24 08:18:42 150
原创 【动态规划】剪绳子
剑指 Offer 14- I. 剪绳子 - 力扣(LeetCode) (leetcode-cn.com)m是个泛指,一开始读题理解错误导致解了很久。简单来说,是一个动态规划问题,和找零钱问题类似。1.动态规划法时间复杂度:O(nm)空间复杂度:O(n)代码如下:class Solution(object): def cuttingRope(self, n): """ :type n: int :rtype: int
2022-02-23 11:38:17 644
原创 LRU cache
146. LRU 缓存 - 力扣(LeetCode) (leetcode-cn.com)OrderedDict:默认根据元素放入的顺序排序class LRUCache(object): def __init__(self, capacity): """ :type capacity: int """ self.dic=collections.OrderedDict() self.remain=capacit
2022-02-21 15:51:46 296
原创 岛屿的最大面积
695. 岛屿的最大面积 - 力扣(LeetCode) (leetcode-cn.com)DFS搜索时间复杂度:O(mn)空间复杂度:O(mn)class Solution(object): def maxAreaOfIsland(self, grid): """ :type grid: List[List[int]] :rtype: int """ area=[] for i in
2022-02-19 18:08:53 69
原创 岛屿周长问题
DFS方法即可遍历所有的岛屿,但是问题就在于怎么求周长。一个题解里面讲:每一次碰壁(遇到不说岛屿的地方)就是周长+1的地方。一个非常巧的、直接的周长求解方式。如图:图解:在 DFS 遍历过程中求周长(Java) - 岛屿的周长 - 力扣(LeetCode) (leetcode-cn.com)时间复杂度:O(mn)空间复杂度:O(mn)代码如下:class Solution(object): def islandPerimeter(self, grid): ...
2022-02-19 17:21:12 544
原创 岛屿数量问题
200. 岛屿数量 - 力扣(LeetCode) (leetcode-cn.com)1.DFS解法--感染问题每次遇到为‘1’的地方都去DFS搜索这整块岛屿,直到边界;每次遇到一块岛屿,计数器就加一时间复杂度:O(mn)空间复杂度:O(mn)代码如下:class Solution(object): def numIslands(self, grid): """ :type grid: List[List[str]] :rtyp
2022-02-19 17:03:54 297
原创 【动态规划】编辑距离
72. 编辑距离 - 力扣(LeetCode) (leetcode-cn.com)动态规划法:class Solution(object): def minDistance(self, word1, word2): """ :type word1: str :type word2: str :rtype: int """ dp=[[0]*(len(word2)+1) for _ in ran
2022-02-18 22:03:46 67
原创 【动态规划】零钱兑换
1.Leetcode地址:322. 零钱兑换 - 力扣(LeetCode) (leetcode-cn.com)def coinChange(self, coins, amount): """ :type coins: List[int] :type amount: int :rtype: int """ dp=[amount+1 for _ in range(amount+1)] dp[0]
2022-02-15 23:34:23 534
原创 【动态规划】子序列问题
子序列问题也是有一堆题目的问题。300. 最长递增子序列 - 力扣(LeetCode) (leetcode-cn.com)依次解决:1.【300】最长递增子序列300. 最长递增子序列 - 力扣(LeetCode) (leetcode-cn.com)1.1.动态规划法老老实实双层循环法。时间复杂度:O(n^2)空间复杂度:O(n)代码如下:class Solution(object): def lengthOfLIS(self, nums):
2022-02-14 20:12:03 353
原创 L1正则化与L2正则化
【一看就懂】机器学习之L1和L2正则化 - 知乎 (zhihu.com)【面试看这篇就够了】L1、L2正则化理解 - 知乎 (zhihu.com)
2022-02-14 09:35:48 378
原创 【动态规划】股票买卖问题
只允许买卖一次:121. 买卖股票的最佳时机 - 力扣(LeetCode) (leetcode-cn.com)允许买卖两次:123. 买卖股票的最佳时机 III - 力扣(LeetCode) (leetcode-cn.com)允许买卖K次:188. 买卖股票的最佳时机 IV - 力扣(LeetCode) (leetcode-cn.com)允许买卖多次,不限:122. 买卖股票的最佳时机 II - 力扣(LeetCode) (leetcode-cn.com)考虑买卖含有手续费:714. 买卖股
2022-02-12 23:36:58 757
原创 【动态规划】乘积最大子数组
Leetcode:152. 乘积最大子数组 - 力扣(LeetCode) (leetcode-cn.com)代码如下:class Solution(object): def maxProduct(self, nums): """ :type nums: List[int] :rtype: int """ if nums is None: return 0 dp=[[0,0
2022-02-09 16:32:33 220
原创 【动态规划】三角形最小路径和
Leetcode:120. 三角形最小路径和 - 力扣(LeetCode) (leetcode-cn.com)#f(m,0)=f(m-1,0)+triangle[m][0]#f(m,n)=min(f(m-1,n),f(m-1,n-1))+triangle[m][n]#f(m,len(triangle[n]-1))=f(m-1,len(triangle[n]-1-1)+triangle[m][len(triangle[n]-1]代码如下:class Solution(object):
2022-02-09 15:34:29 68
原创 【动态规划】爬楼梯
Leetcode地址:70. 爬楼梯 - 力扣(LeetCode) (leetcode-cn.com)动态规划:解法1:时间复杂度O(N)空间复杂度O(N)代码如下:class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ #f(n)=f(n-1)+f(n-2) #f(1)
2022-02-09 13:30:34 221
原创 位1的个数,2的幂,比特数记位
Leetcode地址:191. 位1的个数 - 力扣(LeetCode) (leetcode-cn.com)常用位运算:判断奇偶:x&1==1(奇数),xOR0==0(偶数),比取模的效率更高。清除最低位的1:x=x&(x-1)例:11:1011,清除二进制的1需要三次x&(x-1)运算step 1:1011&1010=1010step 2:1010&1001=1000step 3:1000&111=0得到最低位的1:x&a
2022-02-08 16:38:50 1316
原创 字典树(Trie)
字典树,也称为单词查找树or键树,是哈希树的变种。应用:统计、排序,常用于搜索引擎用于文本词频统计。利用字符串的公共前缀来降低查询时间开销以提供效率以英文的字典树来说,26个字母对应每个节点最多26个子节点,单词长度不超过20,即树的层数不超过20层。基本性质:1.根节点不包含字符,除根节点外,每个节点都只包含一个字符2.从根节点到子节点的路径是字符串3.每个节点的子节点不重复python版本的Trie树实现:class Trie(object): def
2022-02-06 14:51:19 917
原创 半监督学习之伪标签(pseudo label,entropy minimization,self-training)
1.什么是伪标签伪标签方法是一种同时从未标记数据和标记数据中学习的监督范式。将具有最大预测概率的类作为伪标签。形式化后等价于熵正则化(Entropy Regularization)或熵最小化(Entropy Minimization).根据半监督学习的假设,决策边界应该尽可能通过数据较为稀疏的区域,即低密度区域,从而避免把密集的样本数据点分到决策边界的两侧,也就是说模型需要对未标记数据做出低熵预测,即熵最小化。伪标签方法是有利于熵最小化的,即伪标签的目标其实就是熵最小化。Loss function分为
2022-02-02 23:06:35 15421 4
原创 N皇后问题
Leetcode 51:51. N 皇后 - 力扣(LeetCode) (leetcode-cn.com)52. N皇后 II - 力扣(LeetCode) (leetcode-cn.com)DFS剪枝问题不能放棋子的条件:1.queen所在行【遍历项】2.queen所在列3.queen的左对角线,坐标x+y=C(常数)4.queen的右对角线,坐标y-x=C(常数)代码如下:class Solution(object): def solveNQueens(s.
2022-01-14 13:45:23 178
原创 Leetcode22:括号生成
Leetcode:22. 括号生成 - 力扣(LeetCode) (leetcode-cn.com)回溯法空间复杂度:O(n)时间复杂度括号生成 - 括号生成 - 力扣(LeetCode) (leetcode-cn.com)class Solution(object): def generateParenthesis(self, n): """ :type n: int :rtype: List[str] .
2022-01-13 22:49:01 183
原创 二叉树的最小深度
Leetcode:111. 二叉树的最小深度 - 力扣(LeetCode) (leetcode-cn.com)BFS:时间复杂度:O(n)空间复杂度:O(n)代码如下:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val# self.
2022-01-12 09:55:50 141
原创 二叉树的最大深度
Leetcode:104. 二叉树的最大深度 - 力扣(LeetCode) (leetcode-cn.com)DFS:时间复杂度:O(n)空间复杂度:O(height)代码如下:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val#
2022-01-11 22:37:16 72
原创 二叉树的层平均值
Leetcode:637. 二叉树的层平均值 - 力扣(LeetCode) (leetcode-cn.com)时间复杂度:O(n)空间复杂度:O(n)层序遍历# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = le
2022-01-10 14:43:21 66
原创 python 整数浮点数最大值与最小值
整数:#python 2import sysmaxint=sys.maxintminint=-sys.maxint-1#python3import sysmaxint=sys.maxsizeminint=-sys.maxsize-1浮点数:maxfloat=float('inf')minfloat=float('-inf')
2022-01-10 09:20:34 1644
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人