<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[拾人牙慧]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zhdl11</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhdl11]]></copyright><item><title><![CDATA[基于用户协同与基于物品协同的区别]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/90486680</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/90486680</guid><author>zhdl11</author><pubDate>Thu, 23 May 2019 19:43:57 +0800</pubDate><description><![CDATA[基于用户的协同过滤和基于物品的协同过滤在算法上非常类似，两者的主要优缺点从以下几个方面考虑：

从推荐场景考虑

ItemCF利用物品间的相似性做推荐，当用户数量远远超过物品数量时，就可以使用ItemCF，比如所一些购物网站，音乐网站，其物品数据相对稳定，且不必频繁更新；UserCF更适合做新闻、博客等推荐系统，其内容更新频率高。特别是在社交网络中，UserCF是一个更好的选择，可以增加用户对推荐...]]></description><category></category></item><item><title><![CDATA[基于物品的协同过滤算法]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/90486665</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/90486665</guid><author>zhdl11</author><pubDate>Thu, 23 May 2019 19:42:58 +0800</pubDate><description><![CDATA[核心思想
给用户推荐那些和他们之前喜欢的物品相似的物品。
不同于基于内容的推荐，基于物品的协同过滤中的相似主要是利用用户行为的集体智慧。
相似度的计算

计算相似度的实现方式是多种多样的



基于共同喜欢物品的用户列表计算：
wij=∣Ni⋂Nj∣∣Ni∣∗∣Nj∣
  w_{ij} = \frac{|N_i \bigcap N_j|}{\sqrt{|N_i| * |N_j|}}
wij​=∣N...]]></description><category></category></item><item><title><![CDATA[基于内容的推荐算法]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/90486577</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/90486577</guid><author>zhdl11</author><pubDate>Thu, 23 May 2019 19:36:38 +0800</pubDate><description><![CDATA[根据用户对item的点击次数来判据用户对物品的打分情况
基本流程：

特征（内容）提取
提取每个待推荐物品的特征（内容属性），比如说是不同物品的分类标签等。
用户偏好计算
利用用户过去的显式评分或者隐式操作记录，计算用户不同特征（内容属性）上的偏好分数。
内容召回：将待推荐物品的特征与用户偏好得分匹配，取出用户最可能喜欢的物品池。
物品排序：按照用户偏好召回物品池，可能一次性挑选出很多内容，此时，...]]></description><category></category></item><item><title><![CDATA[Linux基础及常用命令]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/86131578</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/86131578</guid><author>zhdl11</author><pubDate>Wed, 09 Jan 2019 09:26:58 +0800</pubDate><description><![CDATA[常用命令
cd命令
它用于切换当前目录，它的参数是要切换到的目录的路径，可以是绝对路径，也可以是相对路径。如：
cd /root/Docements # 切换到目录/root/Docements
cd ./path          # 切换到当前目录下的path目录中，“.”表示当前目录
cd ../path         # 切换到上层目录中的path目录中，“..”表示上一层目录

ls命...]]></description><category></category></item><item><title><![CDATA[LeetCode238除自身以外数组的乘积]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/86131512</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/86131512</guid><author>zhdl11</author><pubDate>Wed, 09 Jan 2019 09:25:47 +0800</pubDate><description><![CDATA[题目描述
给定长度为 n 的整数数组 nums，其中 n &amp;gt; 1，返回输出数组 output ，其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
示例:
输入: [1,2,3,4]
输出: [24,12,8,6]

说明: 请**不要使用除法，**且在 O(n) 时间复杂度内完成此题
解题思路
本题是一道数组相关的题目。
因为不能用除法，只能用乘法，而一...]]></description><category></category></item><item><title><![CDATA[常用大数据分析方法]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/86131473</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/86131473</guid><author>zhdl11</author><pubDate>Wed, 09 Jan 2019 09:25:03 +0800</pubDate><description><![CDATA[数据挖掘分析，最重要的是能够将数据转化为非专业人士也能够清除理解的有意义的见解。
四类分析方法
数据挖掘分析，可以被分为四类核心方法：
描述型分析：发生了什么？
是最常见的数据分析方法。在业务中，这种方法向数据分析师提供了重要指标和业务的衡量方法。
例如：每月的营收和损失账单。数据分析师可以通过这些账单，获得大量的客户数据。
了解客户的地理信息，就是“描述型分析”方法之一。利用可视化工具，能够有效...]]></description><category></category></item><item><title><![CDATA[树的遍历]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/86062439</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/86062439</guid><author>zhdl11</author><pubDate>Tue, 08 Jan 2019 09:42:10 +0800</pubDate><description><![CDATA[关于树的结构，在此不多做说明。一般常见的树结构可为以下形式：
一般是操作的二叉树，下图非二叉树，删掉叶子节点D即可。

遍历方式
对于树的遍历，一般分为：前序，中序， 后序，层次遍历。
前序：根节点 – 左子树 – 右子树
中序：左子树 – 根节点 – 右子树
后序：左子树 – 右子树 –  根节点
层次：按层次遍历
前中后序遍历，虽然名称不同，但是代码实现的基本方法是一样的。
遍历方法
对于前中...]]></description><category></category></item><item><title><![CDATA[二分查找]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/86062424</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/86062424</guid><author>zhdl11</author><pubDate>Tue, 08 Jan 2019 09:41:20 +0800</pubDate><description><![CDATA[二分查找的基本思路就是每次都取中间，如果等于目标，则返回结果。否则，判断目标值与中间值的大小关系，选择丢弃掉一半的元素，再继续执行二分查找。时间复杂度是 O(logN) ，空间复杂度是 O(1) 。
图示：

核心代码如下：
def binarySearch(A, target):
    
    start = 0
    end = len(A) - 1

    # 循环判断，直到找到ta...]]></description><category></category></item><item><title><![CDATA[动态规划]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/86062407</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/86062407</guid><author>zhdl11</author><pubDate>Tue, 08 Jan 2019 09:40:06 +0800</pubDate><description><![CDATA[动态规划是一种算法思路，动态规划的核心思想是是利用存储的历史信息，使得未来需要的信息不再需要进行重复计算，从而实现降低时间复杂度，用空间复杂度来换取时间复杂度。
动态规划一般可分为以下几步：

确定递推量。确定递推过程中要保留的历史信息数量和具体含义，同时，也会定下动态规划的维度。
推导递推式。根据确定的递推量，得到如何利用存储的历史信息在有效时间（线性时间）内得到当前的信息结果
计算初始条件。有...]]></description><category></category></item><item><title><![CDATA[LeetCode154寻找旋转排序数组中的最小值2]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/85292208</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/85292208</guid><author>zhdl11</author><pubDate>Thu, 27 Dec 2018 17:06:29 +0800</pubDate><description><![CDATA[题目描述
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如，数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
请找出其中最小的元素。
注意数组中可能存在重复的元素。
示例 1：
输入: [1,3,5]
输出: 1

示例 2：
输入: [2,2,2,0,1]
输出: 0

解题思路
这一题和上一题其实区别不大，主要不同就是允许数组中存在重复的元素...]]></description><category></category></item><item><title><![CDATA[LeetCode153寻找旋转排序数组中的最小值]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/85279420</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/85279420</guid><author>zhdl11</author><pubDate>Thu, 27 Dec 2018 14:06:08 +0800</pubDate><description><![CDATA[题目描述
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如，数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
请找出其中最小的元素。
你可以假设数组中不存在重复元素。
示例 1:
输入: [3,4,5,1,2]
输出: 1

示例 2:
输入: [4,5,6,7,0,1,2]
输出: 0

解题思路
这题的核心解题思路就是使用二分查找。

当得到...]]></description><category></category></item><item><title><![CDATA[LeetCode130被围绕的区域]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/85072791</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/85072791</guid><author>zhdl11</author><pubDate>Tue, 18 Dec 2018 18:28:26 +0800</pubDate><description><![CDATA[题目描述
给定一个二维的矩阵，包含 'X' 和 'O'（字母 O）。
找到所有被 'X' 围绕的区域，并将这些区域里所有的 'O' 用 'X' 填充。
示例:
X X X X
X O O X
X X O X
X O X X

运行你的函数后，矩阵变为：
X X X X
X X X X
X X X X
X O X X

解释:
被围绕的区间不会存在于边界上，换句话说，任何边界上的 'O' 都不会被填...]]></description><category></category></item><item><title><![CDATA[LeetCode121-123买股票的最佳时机]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/85057202</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/85057202</guid><author>zhdl11</author><pubDate>Mon, 17 Dec 2018 21:41:03 +0800</pubDate><description><![CDATA[**一点想法：**在LeetCode上，买股票的最佳时机是连续的3道题，前两道的思路都比较容易一点，第三题的思路需要站在一个抽象出来的高度来思考，会比较容易一些。
我在做这几道题时，陷入了一种错误思路，以为类似的题目，使用一个矩阵记录差值，一定会做出来。然后花一些时间来整理距离矩阵，还没确定好这样的办法能否完成，就使用了大量的时间，最后发现中间思路不对，导致时间的浪费。以后做题的时候，也应该尽量避...]]></description><category></category></item><item><title><![CDATA[LeetCode118杨辉三角]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/85009971</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/85009971</guid><author>zhdl11</author><pubDate>Fri, 14 Dec 2018 21:44:43 +0800</pubDate><description><![CDATA[题目描述
给定一个非负整数 *numRows，*生成杨辉三角的前 numRows 行。

在杨辉三角中，每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

解题思路
主要就是总结出计算规律，并注意边界条件即可。
代码实现
Github地址
class Solu...]]></description><category></category></item><item><title><![CDATA[LeetCode115不同的子序列]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/85009962</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/85009962</guid><author>zhdl11</author><pubDate>Fri, 14 Dec 2018 21:44:06 +0800</pubDate><description><![CDATA[问题描述
给定一个字符串 S 和一个字符串 T，计算在 S 的子序列中 T 出现的个数。
一个字符串的一个子序列是指，通过删除一些（也可以不删除）字符且不干扰剩余字符相对位置所组成的新字符串。（例如，&quot;ACE&quot; 是 &quot;ABCDE&quot; 的一个子序列，而 &quot;AEC&quot; 不是）
示例 1:
输入: S = &quot;rabbbit&quot;, T = &quot;rabbit&quot;
输出: 3
解释:

如下图所示, 有 3 种可以从 ...]]></description><category></category></item><item><title><![CDATA[LeetCode97交叉字符串]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/85009937</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/85009937</guid><author>zhdl11</author><pubDate>Fri, 14 Dec 2018 21:42:16 +0800</pubDate><description><![CDATA[题目描述
给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。
示例 1:
输入: s1 = &quot;aabcc&quot;, s2 = &quot;dbbca&quot;, s3 = &quot;aadbbcbcac&quot;
输出: true

示例 2:
输入: s1 = &quot;aabcc&quot;, s2 = &quot;dbbca&quot;, s3 = &quot;aadbbbaccc&quot;
输出: false

解题思路
关于字符串匹配]]></description><category></category></item><item><title><![CDATA[LeetCode85最大矩形]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/84998491</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/84998491</guid><author>zhdl11</author><pubDate>Fri, 14 Dec 2018 10:04:17 +0800</pubDate><description><![CDATA[题目描述
给定一个仅包含 0 和 1 的二维二进制矩阵，找出只包含 1 的最大矩形，并返回其面积。
示例:
输入:
[
  [&quot;1&quot;,&quot;0&quot;,&quot;1&quot;,&quot;0&quot;,&quot;0&quot;],
  [&quot;1&quot;,&quot;0&quot;,&quot;1&quot;,&quot;1&quot;,&quot;1&quot;],
  [&quot;1&quot;,&quot;1&quot;,&quot;1&quot;,&]]></description><category></category></item><item><title><![CDATA[pwa应用动态添加到主屏幕]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/84852897</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/84852897</guid><author>zhdl11</author><pubDate>Thu, 06 Dec 2018 14:21:42 +0800</pubDate><description><![CDATA[PWA介绍
PWA(Progressive Web App)，渐进式网页应用，2014年W3C公布Service Worker的相关草案，其生产环境在2015年被Chrome支持。如果将Servicce Worker出现的时间作为PWA应用的诞生时间，则是2015年。
具体的介绍可参考这篇文章或者是Google文档：
PWA介绍
Google文档
核心技术
PWA不是特指某一项技术，而是应用了多项...]]></description><category></category></item><item><title><![CDATA[LeetCode84柱状图中最大的矩形]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/83578152</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/83578152</guid><author>zhdl11</author><pubDate>Wed, 31 Oct 2018 10:58:30 +0800</pubDate><description><![CDATA[题目描述：
给定 n 个非负整数，用来表示柱状图中各个柱子的高度。每个柱子彼此相邻，且宽度为 1 。
求在该柱状图中，能够勾勒出来的矩形的最大面积。

以上是柱状图的示例，其中每个柱子的宽度为 1，给定的高度为 [2,1,5,6,2,3]。
图中阴影部分为所能勾勒出的最大矩形面积，其面积为 10 个单位。
示例:
输入: [2,1,5,6,2,3]
输出: 10

解题思路：
思路一：
这个方法是...]]></description><category></category></item><item><title><![CDATA[LeetCode72编辑距离]]></title><link>https://blog.youkuaiyun.com/zhdl11/article/details/83308511</link><guid>https://blog.youkuaiyun.com/zhdl11/article/details/83308511</guid><author>zhdl11</author><pubDate>Tue, 23 Oct 2018 16:08:24 +0800</pubDate><description><![CDATA[题目描述：
给定两个单词 word1 和 word2，计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作：

插入一个字符
删除一个字符
替换一个字符

示例 1:
输入: word1 = &quot;horse&quot;, word2 = &quot;ros&quot;
输出: 3
解释: 
horse -&amp;gt; rorse (将 'h' 替换为 'r')
rorse -&amp;gt; r...]]></description><category></category></item></channel></rss>