算法
文章平均质量分 53
算法基础及高阶知识汇总
Harrytsz
这个作者很懒,什么都没留下…
展开
-
Acwing Trie 树模板题
AcWing 835. Trie字符串统计维护一个字符串集合,支持两种操作:I x 向集合中插入一个字符串 x;Q x 询问一个字符串在集合中出现了多少次。共有 N 个操作,输入的字符串总长度不超过 10510^5105,字符串仅包含小写英文字母。输入格式第一行包含整数 N,表示操作数。接下来 N 行,每行包含一个操作指令,指令为 I x 或 Q x 中的一种。输出格式对于每个询问指令 Q x,都要输出一个整数作为结果,表示 x 在集合中出现的次数。每个结果占一行。数据范围1≤N原创 2021-08-11 15:37:56 · 148 阅读 · 0 评论 -
2021-08-11
剑指 Offer 53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。示例 1: 输入: nums = [5, 7, 7, 8, 8, 10], target = 8 输出: 2示例 2: 输入: nums = [5, 7, 7, 8, 8, 10], target = 6 输出: 0提示: 0<=nums.length<=1050 <= nums.length <= 10^50<=nums.length<=105.原创 2021-08-11 11:34:55 · 104 阅读 · 0 评论 -
LeetCode 967. 连续差相同的数字
返回所有长度为 n 且满足其每两个连续位上的数字之间的差的绝对值为 k 的 非负整数 。请注意,除了 数字 0 本身之外,答案中的每个数字都 不能 有前导零。例如,01 有一个前导零,所以是无效的;但 0 是有效的。你可以按 任何顺序 返回答案。示例 1: 输入:n = 3, k = 7 输出:[181,292,707,818,929] 解释:注意,070 不是一个有效的数字,因为它有前导零。示例 2: 输入:n = 2, k = 1 输出:[10,12,21,23,32,34,43原创 2021-08-11 11:15:51 · 153 阅读 · 0 评论 -
LeetCode 446. 等差数列划分 II - 子序列
LeetCode 446. 等差数列划分 II - 子序列给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目。如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该序列为等差序列。例如,[1, 3, 5, 7, 9]、[7, 7, 7, 7] 和 [3, -1, -5, -9] 都是等差序列。再例如,[1, 1, 2, 5, 7] 不是等差序列。数组中的子序列是从数组中删除一些元素(也可能不删除)得到的一个序列。例如,[2,5,10] 是 [1,2,1,2,4,1,5原创 2021-08-11 10:43:33 · 199 阅读 · 0 评论 -
Acwing 131.直方图中最大的矩形
直方图是由在公共基线处对齐的一系列矩形组成的多边形。矩形具有相等的宽度,但可以具有不同的高度。例如,图例左侧显示了由高度为 2,1,4,5,1,3,3 的矩形组成的直方图,矩形的宽度都为 1:通常,直方图用于表示离散分布,例如,文本中字符的频率。现在,请你计算在公共基线处对齐的直方图中最大矩形的面积。图例右图显示了所描绘直方图的最大对齐矩形。输入格式输入包含几个测试用例。每个测试用例占据一行,用以描述一个直方图,并以整数 n 开始,表示组成直方图的矩形数目。然后跟随 n 个整数 h1,…原创 2021-08-10 23:09:09 · 312 阅读 · 0 评论 -
41. 缺失的第一个正数
41. 缺失的第一个正数给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。代码:class Solution {public: int firstMissingPositive(vector<int>& nums) {原创 2020-08-21 22:46:48 · 146 阅读 · 0 评论 -
239. 滑动窗口最大值
239. 滑动窗口最大值给定一个数组 numsnumsnums,有一个大小为 kkk 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 kkk 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6原创 2020-08-21 21:49:54 · 234 阅读 · 0 评论 -
40. 组合总和 II
40. 组合总和 II给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输原创 2020-08-21 00:00:35 · 195 阅读 · 0 评论 -
39. 组合总和
39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5], targe原创 2020-08-20 23:24:28 · 198 阅读 · 0 评论 -
237 删除链表中的节点
237. 删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释原创 2020-08-20 22:48:30 · 211 阅读 · 0 评论 -
二叉树的最近公共祖先
236. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1..原创 2020-08-20 22:39:05 · 187 阅读 · 0 评论 -
二叉搜索树的最近公共祖先
235. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q =原创 2020-08-20 22:17:09 · 254 阅读 · 0 评论 -
背包九讲
P01: 01背包问题题目有 NNN 件物品和一个容量为 VVV 的背包。第 i 件物品的费用是 c[i]c[i]c[i],价值是 w[i]w[i]w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即 f[i][v]f[i][v]f[i][v] 表示前 i 件物品恰放入一个容量为 vvv 的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max(f[i−1]原创 2020-07-01 15:13:42 · 191 阅读 · 0 评论 -
XGBOOST从原理到实战:二分类 、多分类
注:转载请注明出处,https://blog.csdn.net/HHTNAN/文章目录XGboost完整系统的原理+实战:[课程直通车](https://edu.csdn.net/course/detail/10332)1.XGBoost2. XGBoost的优点2.1 正则化2.2 并行处理2.3 灵活性2.4 缺失值处理2.5 剪枝2.6 内置交叉验证3. XGBoost详解3.1 数据格式3.2 参数设置3.3xgboost 模型训练方法和参数4.模型的训练、预测、保存4.1 训练模型4.3 保存与转载 2020-06-07 17:36:40 · 6562 阅读 · 0 评论 -
LeetCode Week2 链表专题
LeetCode Week2 链表专题19. 删除链表的倒数第N个节点难度中等833给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?/*** Definition for singly-linked list.* struct L原创 2020-06-04 20:56:41 · 207 阅读 · 0 评论 -
LeetCode Week 1 二分法专题
LeetCode Week 1 二分法专题69. x 的平方根难度简单410实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。class Solution {public: int mySqrt(int x) {原创 2020-06-04 20:55:27 · 231 阅读 · 0 评论 -
LeetCode —— Weekly Contest 83
Weekly Contest 831. 较大分组的位置在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 S = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。最...原创 2020-03-14 17:27:06 · 444 阅读 · 0 评论 -
机器学习推导 —— 绪论
原创 2020-03-06 22:35:35 · 211 阅读 · 0 评论 -
编程巨星的唯一秘诀
别以为是那些软件开发定律,别以为是开发出那些特殊用途的软件,别以为是软件设计技术本身。只有一条真理决定了一个软件程序员的成功还是失败。由于坚持这个真理,一个资深的程序员能在一天的时间里学会一门新的编程语言,而由于不坚持这条真理,一个初级的程序员用十年时间也只能挣到一份糊口的钱、永远是来实现别人的设计、永远不够优秀而得不到晋升的机会。这条真理让你看清了差的程序员和好的程序员的不同之处,好的程序员和伟...转载 2020-01-19 21:36:48 · 209 阅读 · 0 评论 -
算法导论 中+英 PDF分享 附书单
内容简介这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。此书还介绍了...转载 2019-10-27 21:24:20 · 3001 阅读 · 2 评论 -
基于深度学习的推荐系统
在微信公众号“机器之心”中无意中看到的论文:Deep Learing based Recommender System:A Survey and New PerspectivesACMJ.Comput.Cult.Herit.,Vol.1,No.1,Article35.Publication date:July 2017.1、引言推荐系统:用来预测使用者对于他们还没有见到或了解的事物的喜好。由...转载 2019-10-17 21:39:54 · 1928 阅读 · 0 评论 -
一个Quicksort究竟可以写到多么短
一个Quicksort究竟可以写到多么短说实话,我从来没有能一次写对一个快速排序,总是有各种各样的错误。快排麻烦就麻烦在,没办法去调试它,因为它是生成递归的,只能去静态调试,或者是不断的打印数组的状态以推测错误的可能性。 然而快排的基本思想却是极其简单的:接收一个数组,挑一个数,然后把比它小的那一摊数放在它的左边,把比它大的那一摊数放在它的右边,然后再对这个数左右两摊数递归的执行快排过程,...转载 2018-08-16 11:31:44 · 511 阅读 · 0 评论 -
十大经典排序算法动画与解析,看我就够了!(配代码完全版)
前段时间笔者整理发布了《十大经典排序算法动画,看我就够了!》,很多读者在后台留言肯定了这种动画的表达方式,觉得这比一些课本上的死板讲解方式好太多了:),也有些很多读者表示如果在本文中添加配套的代码效果会更好,笔者觉得这个提议不错,于是更新了一下文章^_^。排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排...原创 2019-05-08 08:15:24 · 606 阅读 · 0 评论 -
《剑指offer》Java
《剑指offer》Java标签(空格分隔): 算法文章目录《剑指offer》Java03. 二维数组中的查找04. 替换空格05. 从尾到头打印链表06. 重建二叉树07. 用两个栈实现队列08. 旋转数组的最小数字09. 斐波那契数列8. 跳台阶9. 变态跳台阶10. 矩形覆盖10. 二进制中1的个数11.数值的整数次方14. 调整数组顺序使奇数位于偶数前面15. 链表中倒数第k个结点16...原创 2019-05-09 15:45:48 · 641 阅读 · 0 评论 -
大神的ACM训练计划(详细)
看完人家的博客,发现任重道远。。。一位高手对我的建议:一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练:第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显...转载 2019-04-02 17:21:35 · 604 阅读 · 0 评论 -
资源 | AI、神经网络、机器学习、深度学习以及大数据学习备忘单
以下是关于神经网络、机器学习、深度学习以及大数据学习的备忘单,其中部分内容和此前发布的《资源 | 值得收藏的 27 个机器学习的小抄》有所重复,大家可以两篇综合起来看。提示:点击图片查看大图神经网络Neural Networks Cheat Sheet神经网络图谱Neural Networks Graphs Cheat SheetNeural Network Cheat&nbs...转载 2019-03-28 20:13:27 · 435 阅读 · 0 评论 -
《编程珠玑》课后答案
课后答案Chapter 1 开篇习题:1. 如果不缺内存,如何使用一个具有库的语言实现一种排序算法以表示和排序集合?Answer:C++有实现排序的库函数:sort,该函数实现的是快速排序;另外,C++的容器map和set均可以实现排序,由于map和set的实现是红黑树,所以具有自动排序功能. 当然,这个需要数据不能重复;下面为了复习下快速排序的实现,重新实现了一遍,代码如下所示。in...原创 2019-07-12 11:04:53 · 2512 阅读 · 1 评论 -
字符串算法小结
字符串是编程语言中表示文本的数据类型。许多字符串的问题,比如DP,统计方案数等,本质上都是要先解决字符串匹配问题。本篇主要讲解5种算法:哈希法(最直观的方法)KMP算法(最基础的方法)扩展KMP算法(KMP 算法的扩展)Manacher算法(解决回文串问题)AC自动机(Trie + KMP) 将从算法的基础概念切入,循序渐进详解算法处理与实现,助你系统学习。其间还会穿插经典例题...原创 2019-07-22 16:24:35 · 324 阅读 · 0 评论 -
kuangbin带你飞系列目录与简介
kuangbin带你飞系列是由ACM圈内的一个菊苣,上海大学的邝斌(现已研究生毕业,就职于谷歌),在vjudge平台上建立的一个题目系列,从最简单的暴力搜索,到各种高深的算法与数据结构,几乎无所不包,这一套刷下来对于每一位打ACM的人来说都将是一次水平的飞跃。 目录链接:https://cn.vjudge.net/article/187 题目分级及建议顺序链接:ACM 的正确入门方式是什么? ...转载 2019-09-01 22:21:50 · 853 阅读 · 0 评论 -
K 数之和总结
文章目录1. Two Sum2. Three Sum3. Four Sum4. K SumProblem:Example:Note:1. Two Sum题目: https://leetcode-cn.com/problems/two-sum/description/给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示...原创 2019-09-24 11:35:20 · 907 阅读 · 0 评论 -
求和问题总结
文章目录题目列表问题描述注意事项一、2 sum 解法二、3 sum 解法三、3 sum closest 解法四、3 sum Smaller 解法五、4 sum 解法六、K sum 解法引用题目列表2 sum2 sum II - input array is sorted2 sum III - data structure design3 sum3 sum closest3 sum ...原创 2019-09-24 15:47:49 · 493 阅读 · 0 评论 -
分治法解决最大子数组问题
问题:输入一个整形数组(有正数也有负数),数组中连续的、一个或多个元素组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。输入: 测试数组1, -2, 3, 10, -4, 7, 2, -5;输出: 最大子数组为3, 10, -4, 7, 2;输出最大子数组的和为18 。1.蛮力法求解总体思路:蛮力法是最简单的实现方法,只要列出数组所有可能的组合,然后找出其中和最大的组合即...原创 2019-09-26 14:34:26 · 419 阅读 · 0 评论 -
1190. 反转每对括号间的子串
1190. 反转每对括号间的子串给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:“dcba”示例 2:输入:s = “(u(love)i)”输出:“iloveu”示例 3:输入:s = “(ed(et(oc))el)...原创 2019-09-26 17:59:04 · 649 阅读 · 0 评论 -
常用算法和数据结构的复杂度
常用算法和数据结构的复杂度速查表,搜索算法数据结构时间复杂度空间复杂度 平均最差最差深度优先搜索 (DFS)Graph of |V| vertices and |E| edges-O(|E| + |V|)O(|V|)广度优先搜索 (BFS)Graph of |V| vertices and |E| edges-O(|E| + |V|)...转载 2019-03-28 20:01:58 · 160 阅读 · 0 评论 -
常用算法和数据结构的复杂度
Word文档下载:http://download.csdn.net/detail/anshan1984/5583399Searching(搜索算法)Algorithm(算法)Data Structure(数据结构)Time Complexity(时间复杂度)Space Complexity(空间复杂度) ...转载 2019-03-28 19:49:26 · 335 阅读 · 0 评论 -
Regression
文章目录1.1 广义线性模型1.1.1 普通最小二乘1.1.1.1普通的最小二乘复杂性1.1.2 岭回归1.1.2.1 岭复杂性1.1.2.2 设置正则化参数:广义交叉验证1.1.3 套索1.1.3.1 设置正则化参数1.1.3.1.1 使用交叉验证1.1.3.1.2 基于信息标准的模型选择1.1.3.1.3 与SVM正则化参数的比较1.1.4 多任务套索1.1.5 弹性网1.1.6 多任务弹性网...原创 2018-10-03 16:47:18 · 1136 阅读 · 0 评论 -
数值优化(Numerical Optimization)学习系列-目录
概述数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解。该系列教程可以参考的资料有1. 《Numerical Optimization 2nd》–Jorge Nocedal Stephen J. Wright2. 《凸优化》–Stephen Boyd3. 《非线性最优化基础》–Masao Fukushima(林贵华译)...转载 2018-10-01 16:29:27 · 1097 阅读 · 0 评论 -
牛顿法与拟牛顿法学习笔记(一)牛顿法
机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BFGS。为了解这个算法的数学机理,这几天做了一些调研,现把学习过程中理解的一些东西整理出来。目录链接(1) 牛顿法(2) 拟牛顿条件(3) DFP 算法(4) BFGS 算法...转载 2018-10-01 15:47:19 · 212 阅读 · 0 评论 -
(LintCode)二叉查找树中搜索区间
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guoziqing506/article/details/52197738 题目描述:给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点。找到树中所有值在 k1 到 k2 范围...转载 2018-09-23 22:47:31 · 275 阅读 · 0 评论 -
剑指offer——python实现(面试必备)
原文:http://blog.csdn.net/u012505432/article/details/52071537特别感谢原文作者,转载过来,深入研究!2017年8月28日,开始刷题从剑指offer开始,python实现...转载 2018-09-17 00:24:16 · 404 阅读 · 0 评论