LeetCode刷题记录——TwoPointers

不得不说,TwoPointer问题一道道的都是很有意思的。。。

763. Patition Labels

还算不错,需要遍历一遍拿到最右位置,然后是N的空间复杂度,N的时间复杂度。

524. Longest Word in Dictionary through Deleting

和703有一点像,需要先遍历一遍,这里需要存下一个字符出现的每一个位置。然后加了大量的trick。

287. Find he Duplicate Number

这道题思路也是很清奇了。首先先不考虑节点0,因为题目规定所有的节点的值的范围都在1到n范围内,因此1-n范围内必定形成环(证明方法类似于1自己不形成环,那么就要指向非1的数,假如指向2,然后为了不形成环,2不能指向1和2,类似的递推,n个点不形成环只能指向第n+1个节点),然后节点0由于题目要求一定指向1到你的某个节点。

Read More

LeetCode刷题记录——Stack

关于栈这部分,单调栈是一个必须掌握的核心知识点。其次,借助栈而使用非递归的方式遍历一棵树是第二个要掌握的核心知识点,这部分我应该是放在Tree相关的刷题笔记中了。

682. Baseball Game

没啥。

496. Next Greater Element I

使用了MinStack,有点意思的。维护一个MinStack,然后遍历数组,栈空或者当前元素小于栈顶元素时,压栈;大于的话就出栈并且意味着找到了比当前栈顶元素大的第一个值,出栈。

232. Implement Queue using Stacks

一个数据栈,一个辅助栈,用于捣腾数据。

Read More

《推荐系统实战》读书笔记

第一章 好的推荐系统

1.1 什么是推荐系统

  • 数据量很大时,解决商品的长尾问题。类似于搜索引擎,不过搜索引擎的场景是用户知道自己要什么。本质是将用户和物品连接起来。
  • 社会化推荐(好友推荐),基于内容的推荐(通过喜欢的电影中的演员或者导演推荐),协同过滤(找到相似的人)

1.2 个性化推荐系统的应用

  • 电商:提高点击率CTR和转化率CVR。打包销售(cross selling),购买推荐商品的话,连同原本的商品一起打折。
  • 电影
  • 音乐:比较特殊的一个领域。可以免费,大量重复行为,情景和上下文相关。存在一些纯粹的音乐个性化FM网站。
  • 社交网络:利用社交网络信息进行商品推荐;信息流推荐;推荐好友。Facebook:EdgeRank。
  • 个性化阅读
  • 基于位置的服务
  • 邮箱:这里指的不是垃圾邮件过滤,而是个性化邮件系统,根据用户习惯对邮件进行排序或者设置一个自动筛选得到的高优先级文件夹(谷歌),根据谷歌的研究,这一产品帮助用户节约6%的时间。
  • 广告:个性化广告现在独立出“计算广告”这一独立学科。

Read More

统计机器学习要点总结

注:仅用于个人复习

1. SVM

  1. 支持向量机不提供概率输出,而是对新的输入进行分类决策。
  2. 需要特征规格化。
  3. 线性可分情况下,最优解可证唯一。《统计学习方法》P100。
  4. 间隔长度是w模长的倒数的2倍。
  5. 最终的解只依赖支撑向量。
  6. 惩罚系数C越大,SVM越倾向于将每个点都分类正确;C越小,SVM泛化能力越强,能容忍更多的错误点。
  7. 结构风险最小化来提高泛化能力。
  8. 变量的选择方法:第一个变量的选择是外层循环,原则是违反KKT条件最严重的样本点,这里的KKT条件就是拉格朗日系数要和其距离决策面的距离一致。优先检验恰好落在间隔上的点。第二个变量的选择标准是希望被选择的变量可以有足够大的变化。如果不能是目标函数下降的足够多,会重新去选择第一个变量。

Read More

从优先队列到贪心算法


优先队列

需求

在算法设计中,我们常有求一个容器中的最小值或最大值的需求。比如求一个有100万(后面用N表示总元素数目)的元素的数组中的最大值,我们会只维护当前最大值,然后遍历数组中的每一个元素并更新最大值。那么,如果需要求前K大元素或者第K大元素,(为了方便思考,可以简单的假设K=10)。如果用排序的方法解决该问题就会显得太过臃肿,O(nlogn)的时间复杂度暂且不提,如果使用内部排序,更要付出能存下整个数组的存储代价。那么简单的扩展求最大值的方法,只维护K个变量,然后从头遍历数组,每次拿到一个新的元素就更新当前的K个变量。如果用数组存放这k个元素,此时的时间复杂度是O(KN)。这时我们实际上是一直保持这K个元素有序的,再次放宽限制,如果只需要知道前K个元素是哪K个的话,每次只需要用最小的元素和新来的元素比就行,比最小的元素大的话就有了被我们维护的资格,把它加入容器并踢出最小元素就可以了。

Read More

本站总访问量