算法
文章平均质量分 73
我不是臭弟弟
好吃懒做 无所不为
展开
-
基于 itemCF (item collaborative filtering) 推荐(基于物品的协同过滤算法)的理解
推荐系统,一般是用于电商、广告、内容、信息流等推荐平台,以挖掘数据的最大价值。可以提升用户粘性和转化率。而本文提及到的基于内容的协同过滤算法就是一个经典的算法。基本思想首先,什么是协同呢?协同在这里指的就是,用集体的智慧来为个体过滤出他需要的信息。基于物品的协同过滤算法,就是以物品为连接点,给用户推荐那些和他们之前喜欢的物品相似的物品。 比如,该算法会因为你购买过《Java从入门到精通》而给你推荐《Java并发编程实战》。不过,基于物品的协同过滤算法并不利用物品的内容属性计算物品之间的相似度,二是通过原创 2022-03-04 16:51:56 · 1217 阅读 · 0 评论 -
LRU缓存 Java实现
解题思路LRULRU 总体上是这样的,最近使用的放在前边(最左边),最近没用的放到后边(最右边),来了一个新的数,如果内存满了,把旧的数淘汰掉,那位了方便移动数据,我们肯定不能考虑用数组,呼之欲出,就是使用链表了,解决方案:链表(处理新老关系)+哈希(查询在不在),分析如下1.底层应该用链表,按照数据的新旧程度来排列,旧的在左边,新的在右边,新来一个加到尾部(你可以想象自己从左往右画一条链表),删除是删头,除了这两个操作,还有就是把一个数据从中间拿出来放尾巴上(这个数组就很难做到)2.这里还有一个需求原创 2020-10-31 16:11:35 · 171 阅读 · 0 评论 -
LeetCode-674. 最长连续递增序列
最长连续递增序列给定一个未经排序的整数数组,找到最长且连续的的递增序列,并返回该序列的长度。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。注意:数组长度不会超过10000。思路:过程:count 为当前元素峰值,ans为最大峰值.原创 2020-09-17 09:02:04 · 122 阅读 · 0 评论 -
LeetCode 130. 被围绕的区域
给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直原创 2020-08-11 23:06:33 · 89 阅读 · 0 评论 -
696. 计数二进制子串
计数二进制子串给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。示例 2 :输入:.原创 2020-08-10 18:01:55 · 106 阅读 · 0 评论 -
动态规划和滑动窗口解决最长重复子数组
问题描述给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3, 2, 1] 。提示:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100动态规划这题一看就知道其实就是求最长公共子串问题,我们就以题中的示例画个图来看一下。最长的公共子数组就是上面红色所对应的[3,2,1原创 2020-07-21 15:03:05 · 325 阅读 · 0 评论 -
如何借助哈希算法实现高效字符串匹配?——RK算法
前言字符串匹配算法简单的有BF算法,RK算法,今天我们只谈论RK算法。BF 算法中的 BF 是 Brute Force 的缩写,中文叫作暴力匹配算法,也叫朴素匹配算法。从名字可以看出,这种算法的字符串匹配方式很“暴力”,当然也就会比较简单、好懂,但相应的性能也不高。在讨论RK算法前,定义两个概念,方便我后面讲解。它们分别是主串和模式串。作为最简单、最暴力的字符串匹配算法,BF 算法的思想可以用一句话来概括,那就是,我们在主串中,检查起始位置分别是 0、1、2…n-m 且长度为 m 的 n-m+1 个原创 2020-06-24 17:43:17 · 920 阅读 · 0 评论 -
递归,回溯和DFS区别
递归是一种算法结构,回溯是一种算法思想一个递归就是在函数中调用函数本身来解决问题回溯就是通过不同的尝试来生成问题的解,有点类似于穷举,但是和穷举不同的是回溯会“剪枝”,意思就是对已经知道错误的结果没必要再枚举接下来的答案了,比如一个有序数列1,2,3,4,5,我要找和为5的所有集合,从前往后搜索我选了1,然后2,然后选3 的时候发现和已经大于预期,那么4,5肯定也不行,这就是一种对搜索过程的优化回溯搜索是深度优先搜索(DFS)的一种对于某一个搜索树来说(搜索树是起记录路径和状态判断的作用),回溯和D原创 2020-05-24 20:48:46 · 593 阅读 · 1 评论