- 博客(239)
- 收藏
- 关注
原创 逻辑回归总结
逻辑回归由于存在易于实现、解释性好以及容易扩展等优点,被广泛应用于点击率预估(CTR)、计算广告(CA)以及推荐系统(RS)等任务中。逻辑回归虽然名字叫做回归,但实际上却是一种分类学习方法。LR是一个传统的二分类模型,它也可以用于多分类任务,其基本思想是:将多分类任务拆分成若干个二分类任务,然后对每个二分类任务训练一个模型,最后将多个模型的结果进行集成以获得最终的分类结果。一般来说,可以采取的拆分策略有:one vs allLR实现简单高效易解释,计算速度快,易并行,在大规模数据情况下非常适用,更适合
2021-08-09 22:59:15
267
原创 图论常见实现方式
以邻接矩阵的形式来进行访问https://www.jianshu.com/p/2226dbe98e06class Solution { //A, B, C,D, E, F static int[][] graph = new int[][]{{0, 0, 1, 1, 0, 0}, {0, 0, 1, 0, 0, 0}, {1, 1, 0, 0, 0, 0}, {0, 0, 1
2021-07-29 23:13:29
165
原创 编辑距离类型题目
L10 正则表达式匹配从右往左,判断是否出现星号,若没有,判断当前是否相等(两种情况,1.真的相等2.为点符号)L44. 通配符匹配注意还不太一样,还没做出来呢??L72编辑距离L1143最长公共子序列返回这两个字符串的最长公共子序列的长度,可以不完全对应...
2021-06-12 10:10:38
137
原创 L44. 通配符匹配
通配符匹配给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa”.
2021-06-05 10:44:06
99
原创 L354. 俄罗斯套娃信封问题
给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。注意:不允许旋转信封。示例 1:输入:envelopes = [[5,4],[6,4],[6,7],[2,3]]输出:3解释:最多信封的个数为 3, 组合为: [2,3]
2021-06-04 21:48:51
114
原创 L228汇总区间
给定一个无重复元素的有序整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:“a->b” ,如果 a != b“a” ,如果 a == b示例 1:输入:nums = [0,1,2,4,5,7]输出:[“0->2”,“4->5”,“7”]解释:区间范围是:[0,2] -->
2021-05-29 12:44:46
110
原创 L1288. 删除被覆盖区间
给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。只有当 c <= a 且 b <= d 时,我们才认为区间 [a,b) 被区间 [c,d) 覆盖。在完成所有删除操作后,请你返回列表中剩余区间的数目。示例:输入:intervals = [[1,4],[3,6],[2,8]]输出:2解释:区间 [3,6] 被区间 [2,8] 覆盖,所以它被删除了。注意这里不是求出总的不重叠区间的个数,而是求除去被完全覆盖的个数,不能使用《会议室》那种算法1.暴力遍历判断法:class S
2021-05-29 12:12:45
124
原创 L57插入区间
给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例 2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出:[[1,2],[3,10],[12,16]]解释
2021-05-28 22:58:15
72
原创 L56合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:intervals = [[1,4],[4,5]]
2021-05-26 16:05:00
94
原创 L31下一个排列
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输出:[1]...
2021-05-25 23:17:15
87
原创 L11.盛最多水的容器
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height = [1,1
2021-05-23 10:25:51
83
原创 L239.滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3
2021-05-22 17:34:11
125
2
原创 209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]输出:1示例 3:输入:
2021-05-22 17:04:50
60
原创 L30. 串联所有单词的子串
给定一个字符串 s 和一些 长度相同 的单词 words 。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符 ,但不需要考虑 words 中单词串联的顺序。示例 1:输入:s = “barfoothefoobarman”, words = [“foo”,“bar”]输出:[0,9]解释:从索引 0 和 9 开始的子串分别是 “barfoo” 和 “foobar” 。输出的顺序不重要, [9,0] 也是有效答案
2021-05-22 10:52:47
57
原创 L2两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,
2021-05-21 11:14:34
148
原创 单调栈总结
L581. 最短无序连续子数组利用单调性质,确定不单调的起始位置;单调增L739. 每日温度单调减栈,恰好在出栈时候,可以为新数组赋值L42接雨水这里要充分理解什么情况下才能接住雨水,用的递减栈而不是递加栈L84 柱状图中最大的矩形...
2021-05-17 20:52:31
53
原创 150. 逆波兰表达式求值
根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,"+",“3”,"*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = [“4”,“13”,“5”,"/","+"]输出:6解释
2021-05-16 22:42:48
120
原创 L71简化路径
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,’//’)都被视为单个斜杠 ‘/’ 。 对于此问题,任何其他格式的点(例如,’…’)均被视为文件/目录名称。请注意,返回的 规范路径 必须遵循下述格式:始终以斜杠 ‘/’ 开头。两个目录
2021-05-16 16:48:38
217
原创 L20.有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true1.原想直接用单调栈的模板来做,其实完全不适
2021-05-16 15:56:43
72
原创 L402移掉K位数字
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。num 不会包含任何前导零。示例 1 :输入: num = “1432219”, k = 3输出: “1219”解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。示例 2 :输入: num = “10200”, k = 1输出: “200”解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。示例 3
2021-05-16 14:34:30
55
原创 L316. 去除重复字母
去除重复字母给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。注意:该题与 1081 https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-characters 相同示例 1:输入:s = “bcabc”输出:“abc”示例 2:输入:s = “cbacdcbc”输出:“acdb”提示:1 <= s.length .
2021-05-16 14:03:05
250
原创 L1049最后一块石头的重量 II
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]输出:1解释:组合 2 和 4,得到 2,所以数组转化为
2021-04-30 15:49:20
407
2
原创 L879. 盈利计划
集团里有 n 名员工,他们可以完成各种各样的工作创造利润。第 i 种工作会产生 profit[i] 的利润,它要求 group[i] 名成员共同参与。如果成员参与了其中一项工作,就不能参与另一项工作。工作的任何至少产生 minProfit 利润的子集称为盈利计划。并且工作的成员总数最多为 n 。有多少种计划可以选择?因为答案很大,所以 返回结果模 10^9 + 7 的值。示例 1:输入:n = 5, minProfit = 3, group = [2,2], profit = [2,3]输出:2
2021-04-30 14:56:53
183
1
原创 树形dp
L337. 打家劫舍 III利用后序遍历,同时利用无后效性L124. 二叉树中的最大路径和首先最大路径不一定从根节点开始,有可能根节点恰好位于其中某一环节,仍然利用后序遍历,最终确定,在以根节点为中间环节情况下的最值L543 二叉树的直径与上面是相同的思路,都是借助了后序遍历,该辅助函数并不直接计算所需要的结果,都是在遍历过程中一一确定;这里也是借助求二叉树的深度进一步求得的。L687. 最长同值路径...
2021-04-26 23:24:22
349
原创 L865. 具有所有最深节点的最小子树
给定一个根为 root 的二叉树,每个节点的深度是 该节点到根的最短距离 。如果一个节点在 整个树 的任意节点之间具有最大的深度,则该节点是 最深的 。一个节点的 子树 是该节点加上它的所有后代的集合。返回能满足 以该节点为根的子树中包含所有最深的节点 这一条件的具有最大深度的节点。注意:本题与力扣 1123 重复:https://leetcode-cn.com/problems/lowest-common-ancestor-of-deepest-leaves/输入:root = [3,5,1,
2021-04-26 23:23:55
123
原创 L1372二叉树中的最长交错路径
给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下:选择二叉树中 任意 节点和一个方向(左或者右)。如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。改变前进方向:左变右或者右变左。重复第二步和第三步,直到你在树中无法继续移动。交错路径的长度定义为:访问过的节点数目 - 1(单个节点的路径长度为 0 )。请你返回给定树中最长 交错路径 的长度。输入:root = [1,null,1,1,1,null,null,1,1,null,1,null,null,nul
2021-04-26 22:46:53
140
原创 L687. 最长同值路径
最长同值路径给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2示例 2:输入: 1 / \ 4 5 / \ \ 4 4 5输.
2021-04-24 22:21:53
154
原创 背包问题汇总
完全背包问题:需要先了解推导过程,再结合相关的例题,记牢!L322零钱兑换完全背包问题,这里要求的是价值最小L518零钱兑换 II这里包含了完全背包的推导过程完全背包笔记关键形式不同的原因在于,一个是累加的求总和的,一个则是求各种可能情况中的最大或者最小值...
2021-04-23 23:20:00
1671
原创 买卖股票问题全集
L121买卖股票的最佳时机买卖一次L122买卖股票的最佳时机 II添加链接描述 多次买卖一只股票L309. 最佳买卖股票时机含冷冻期
2021-04-23 11:22:19
148
原创 L714买卖股票的最佳时机含手续费
给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2输出: 8解释: 能够达到的最大利润:在此处买入 pri
2021-04-23 11:21:18
210
原创 L188买卖股票的最佳时机 IV
给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。示例 2:输入:k = 2, pr
2021-04-22 22:04:56
83
原创 L123买卖股票的最佳时机 III
买卖股票的最佳时机 III给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时...
2021-04-22 21:06:04
101
原创 L240搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。整体思路是尽可能多的排除掉无关 行/列 ,可以从 第一排最后一个/第一列最后一个 开始搜索,这里选择从 第一排最后一个 开始由于行列规则等价,搜索策略 先按行排除/按列排除 也是等价的,这里选择 按行排除搜索规则:小于 target 则向左搜索,大于 则向下搜索,可以保证 global search若超出 矩阵大小 则意味着没有匹配
2021-04-19 22:59:14
60
原创 L155最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,null,-3,nul
2021-04-18 16:11:37
58
原创 go_读文件,html模板
read方法package mainimport ( "fmt" "io" "os")func main() { //打开对应目录形成file结构体 file, err := os.Open("") if err == nil { sum := 0 buf := make([] byte, 2010) for { //返回读取的长度 n, err := file.Read(buf) sum += n if err == io.EOF {
2021-04-16 19:59:42
102
原创 protobuf
package mainimport "github.com/gin-gonic/gin"func main() { r := gin.Default() a := []string{"1", "2", "3"} r.GET("/protobuf", func(c *gin.Context){ data := &module.User{} c.ProtoBuf(200, data) }) r.Run(":8080")}这是将信息,user进行序列化// Prot
2021-04-15 10:36:32
82
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人