算法
仆以柳
这个作者很懒,什么都没留下…
展开
-
求数组里最大的3个数
假设数组有n个元素1.冒泡排序冒3次泡泡就能找出最大的3个数复杂度为: (n - 1) + (n - 2) + (n - 3) = 3n - 6看代码//冒3下泡泡func method1(arr []int) []int { var ret []int ; step := 0; var length = len(arr); for i := 0; i < 3 ; i...原创 2019-04-20 21:42:38 · 7039 阅读 · 2 评论 -
令牌桶算法和漏桶算法以及流量控制浅谈
在双十一等大促环节,系统需要限流,外部需要在我制定的速率限制来调用(超出的流量直接挡掉,系统不进行处理),有没有理论依据呢?这里看了两个算法约定访问速率是流量管理中比较常用的方法之一,令牌桶算法,是目前最常用的流量限制的方法。 什么是令牌桶算法?令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Li...转载 2019-04-25 23:34:24 · 1038 阅读 · 0 评论 -
GeoHash 算法
业界比较通用的地理位置距离排序算法是 GeoHash 算法,Redis 也使用 GeoHash 算法。GeoHash 算法将二维的经纬度数据映射到一维的整数,这样所有的元素都将在挂载到一条线上,距离靠近的二维坐标映射到一维后的点之间距离也会很接近。当我们想要计算「附近的人时」,首先将目标位置映射到这条线上,然后在这个一维的线上获取附近的点就行了。那这个映射算法具体是怎样的呢?它将整个地球看成一...原创 2019-04-26 01:08:26 · 1591 阅读 · 0 评论 -
求矩阵里的最大二阶子矩阵
2 * 2 矩阵的最大子矩阵Val(2 * 2)为本身m * n 矩阵的最大子矩阵为 m * (n - 1)的最大子矩阵 Val(m*(n-1)) 和 包含第n行元素的最大子矩阵 之间的最大值可以递推到 m * 2m * 2 矩阵的最大子矩阵为 (m - 1) * 2 的最大子矩阵 和 包含第m列元素的最大子矩阵 之间的最大值递推到 2 * 2复杂度为: (m - 2) * n + (...原创 2019-04-22 00:33:23 · 594 阅读 · 0 评论 -
求n个字母排列组合组成的全部字符串的结果
假设有这么一个数组var arr = []string{"a" , "b" , "c" , "d" , "e"};思路假设只有两个元素ab,那么结果集 ret[2] 就是 ab , ba假设有三个元素abc , 那么操作方法就是 将第三个元素c分别插入两个元素的结果集 ret[2] 元素的所有位置中 , 比如ab , 那依次是 ?ab , a?b , ab? , 得到结果集 ret[3...原创 2019-04-22 01:10:53 · 2171 阅读 · 0 评论 -
求解最大连续子数组和
假设有个数组 arr = [ -4,-5,-10,7,4,-12 ]1.笨方法,暴力遍历遍历数组,挨个求出i元素为起始的最大连续数组arr[i] + arr[i + 1]arr[i] + arr[i + 1] + arr[i + 2]arr[i] + arr[i + 1] + arr[i + 2] + arr[i + 3] + …看代码//常规遍历func method1(ar...原创 2019-04-19 00:18:30 · 120 阅读 · 0 评论