随笔分类 -  算法

摘要:题目: 思路: 如果数组长度为N,考虑使用N+1个桶,每个桶能放入数的范围固定,将数组中数据依次放入桶中,那么肯定有一个桶是空桶(因为数一共有N个,而桶有N+1个)。 最大差值就出现在相邻两个不为空的桶之间,具体为当前铜的最小值减去前一个桶的最大值。 需要注意的是:如何对于每个数,计算它应该放入的桶 阅读全文
posted @ 2018-07-12 10:16 befmain 阅读(1378) 评论(0) 推荐(1)
摘要:文章中算法多来自于牛客网左神算法基础班的示例代码,本文中只贴出关键代码部分。 如有侵权,请告知。给左神打波广告,https://www.nowcoder.com/courses/semester/algorithm-elementary。 讲的真的特别好,下面开始进入正题。 1.冒泡排序 2. 插入 阅读全文
posted @ 2018-07-12 10:08 befmain 阅读(322) 评论(0) 推荐(0)
摘要:随机播放音乐,这个功能太普通以至于以前从未考虑过其背后实现逻辑。 Random还是shuffle 我们经常使用的随机播放功能,在外国同行口中并不是叫Random播放,而是叫Shuffle,洗牌的意思。 为什么不是Random?来看两个例子。 在Spotify成立之初,他们使用一种叫「Fisher-Y 阅读全文
posted @ 2018-07-04 14:14 befmain 阅读(1192) 评论(0) 推荐(1)
摘要:LRU原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 实现1 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每当缓存命中 阅读全文
posted @ 2018-07-02 20:38 befmain 阅读(20019) 评论(0) 推荐(3)
摘要:问题 有0-n这n+1个数,但是其中丢了一个数,请问如何找出丢了哪个数? 五种方法 1)用1+2+...+n减去当前输入数据的总和。时间复杂度:O(n) 空间复杂度:O(1) 【容易溢出】 2)用12...*n除以当前输入数据的总积。时间复杂度:O(n) 空间复杂度:O(1) 【容易溢出】 3)用1 阅读全文
posted @ 2018-07-02 20:33 befmain 阅读(907) 评论(0) 推荐(0)
摘要:问题 给定一个集合,输出它的所有子集。 示例: 给定集合{1,2,3},应该输出: {} {1} {2} {1, 2} {3} {1, 3} {2, 3} {1, 2, 3} 解法1:增量构造法 增量构造法,每次选择一个元素放到集合中,每次操作的结果即是一个子集。 递归操作,每次向当前集合中添加一个 阅读全文
posted @ 2018-07-02 20:27 befmain 阅读(1113) 评论(0) 推荐(0)