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

浙公网安备 33010602011771号