算法思想:二分查找。 从1到nums中的最大值,作为左右边界。进行二分查找。 target默认为nums中的最大值,这样保证除数之和最小。(此时r=1 * n) 每次以mid作为除数计算目标值,并根据目标值与threshold的比较,进行二分查找。 注意第7行的判断条件是 l <= h。 本周比较顺 ...
分类:
其他好文 时间:
2019-12-08 12:39:29
阅读次数:
96
问题描述:给定有向带权图G=(V,E),其中每条边的权是非负实数。此外,给定V中的一个顶点,称为源点。现在要计算从源点到所有其他各顶点的最短路径长度,这里路径长度指路上各边的权之和。 算法设计:这个问题一般采用迪杰斯特拉算法(Dijkstra)算法思想是先求出长度最短的一条路径,再参照该最短路径求出 ...
分类:
编程语言 时间:
2019-12-07 16:00:29
阅读次数:
115
二分查找是一种查询效率非常高的查找算法。又称折半查找。对有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。 ...
分类:
编程语言 时间:
2019-12-06 13:55:29
阅读次数:
85
Dijkstra 单源最短路 算法思想 每次选择没有被访问过的,并且dis最小的点,加入集合,更新dis 模板 例题 参考博客 ...
分类:
其他好文 时间:
2019-12-02 13:58:52
阅读次数:
94
Shell排序 Shell排序是大量数据需要排序时,更为高效的插入排序。它的算法思想基于插入排序的算法思想 流程: (1)将n个元素数组分成n/2个数字序列,第一个数据和第n/2个数据为一对,等等,以此类推 (2)一次循环使每一个数对排列好顺序 (3)变成n/4个数对,再次排序。 (4)不断重复上述 ...
分类:
编程语言 时间:
2019-11-28 13:24:53
阅读次数:
92
一、冒泡排序 arr = [5,3,1,2,4] n = len(arr) for i in range(n - 1): for j in range(n - 1 - i): print(i,j) if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j ...
分类:
编程语言 时间:
2019-11-23 22:07:03
阅读次数:
93
原创:微信公众号 帅地 "苦逼的码农" 说明 十大排序算法 可以说是每个程序员都必须得掌握的了,花了一天的时间把代码实现且整理了一下,为了方便大家学习,我把它整理成一篇文章,每种算法会有简单的 算法思想描述 ,为了方便大家理解,我还找来了 动图演示 ;这还不够,我还附上了对应的 优质文章。 术语铺垫 ...
分类:
编程语言 时间:
2019-11-22 23:39:30
阅读次数:
70
一、直接插入排序 直接插入排序 和折半插入排序 ,图示是一样的,但是在进行插入的时候就看出效率 了 。 折半插入排序:采用折半查找插入; 直接插入排序:一次比较插入。(代码中很明显) 数据量大折半插入的效率高点 //直接插入排序//算法思想:每趟将一个待排的关键字按照其值的大小插入到已经排好的部分有 ...
分类:
编程语言 时间:
2019-11-21 17:02:37
阅读次数:
89
介绍 kmeans算法又名k均值算法。 算法思想:先从样本集中随机选取 ??k 个样本作为簇中心,并计算所有样本与这 ??k 个“簇中心”的距离,对于每一个样本,将其划分到与其距离最近的“簇中心”所在的簇中,对于新的簇计算各个簇的新的“簇中心”。实现kmeans算法的三点: (1)簇个数 ??k 的 ...
分类:
编程语言 时间:
2019-11-14 23:55:32
阅读次数:
186
导言 动态规划问题一直是算法面试当中的重点和难点,并且动态规划这种通过空间换取时间的算法思想在实际的工作中也会被频繁用到,这篇文章的目的主要是解释清楚 什么是动态规划,还有就是面对一道动态规划问题,一般的 思考步骤 以及其中的注意事项等等,最后通过几道题目将理论和实践结合。 什么是动态规划 如果你还 ...
分类:
其他好文 时间:
2019-11-14 10:13:42
阅读次数:
83