Floyd算法适用于求解全源最短路、也就是能够求解任意两点间的最短路径并且是适用于含有负权边的图,但是含有负环则不行了!空间复杂度为O(n2)、时间复杂度为O(n3)。其具体的原理在百度能够找到很多,下面只说说我的理解,首先关键代码如下 即枚举所有的点去作为中转点去松弛 i 和 j ,那考虑这样的一 ...
分类:
其他好文 时间:
2017-10-20 21:32:56
阅读次数:
267
核心代码 算法分析: 最好时间复杂度:O(nlog2(n)) 平均时间复杂度:O(nlog2(n)) 最坏时间复杂度:O(n^2) 有序 空间复杂度:log2(n) 稳定性:不稳定 ...
分类:
编程语言 时间:
2017-10-20 13:29:28
阅读次数:
196
题目链接:https://leetcode.com/problems/single-number/description/ 题目大意:给出一串数组,里面的数都是两个,只有一个数是一个,把这个只有一个的数找出来。时间复杂度最好是线性的,空间复杂度最好为O(1). 法一:利用map,空间换时间,代码如下 ...
分类:
其他好文 时间:
2017-10-19 10:22:23
阅读次数:
178
题目链接:https://leetcode.com/problems/linked-list-cycle/description/ 题目大意:给出一个链表,判断该链表是否有环,空间复杂度最好控制在o(1) 这个题没有给测试用例,导致没太明白题目意思,看了题解,用了两种方法示例如下: 法一(借鉴):利 ...
分类:
其他好文 时间:
2017-10-18 16:07:59
阅读次数:
138
一、数据之间的关系 线性关系、一对一、一对多、多对多 二、复杂度 1.时间复杂度:耗费时间的长度2.空间复杂度:占用存储单元的长度3.如果计算时间复杂度、空间复杂度? 三、线性关系 1.链表 算法: 1.二分查找法:通过分成两半,不断地缩小范围,进行查找 2.分而治之:先将数据"分",然后再抓住交界 ...
分类:
其他好文 时间:
2017-10-17 22:52:47
阅读次数:
123
核心代码 算法分析: 最好时间复杂度:O(n) 平均时间复杂度:O(n^2) 最坏时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:稳定 ...
分类:
编程语言 时间:
2017-10-17 01:09:06
阅读次数:
213
1.直接插入排序 应用:属于比较排序的一种,最基础的排序方法,稳定,时间复杂度为O(n^2),空间复杂度为S(1). 方法:设置待排数字角标为i,j = i, 把j对应数字与其前的字数逐个对比交换完成后,i++即可. 1 public class Paixu { 2 public int[] pai ...
分类:
其他好文 时间:
2017-10-15 22:24:44
阅读次数:
321
水题,可以立刻想到的方法是 1.从头到尾遍历,依次入栈,然后出栈。时间复杂度和空间复杂度都是O(n) 2.先反转链表,然后遍历。时间复杂度O(n),空间O(1) 3.先放到数组,再倒序存一遍,和方法1思想相同,也是最蠢的方法。 其他方法自己想吧... 最蠢的我贴出最蠢的代码- - /** * str ...
分类:
其他好文 时间:
2017-10-13 12:25:44
阅读次数:
135
排序算法(二):堆排序-Java实现 首先对堆排序有个整体的认识,堆排序是一个不稳定的排序算法,其平均时间复杂度为O(nlogn),空间复杂度O(1)。 那么何为堆排序呢?所谓堆排序是借助于堆的概念来完成的排序算法,其是选择排序中的一种,因此通过选择排序来理解堆排序会更加容易一些 下面我们来看一下堆 ...
分类:
编程语言 时间:
2017-10-09 02:10:42
阅读次数:
241
题目: 总结大佬们的思路: 思路1:所有数两两求和,存入map中,每次判断有没有相反数被标记过。 思路2:对所有数排序,排完所有数两两求和,结果正好是排好序的。然后扫一遍,二分查找看之前有没有相反数存在。 思路1时间复杂度O(n^2),空间复杂度O(n^2) 思路2时间复杂度O(n^2log(n)) ...
分类:
其他好文 时间:
2017-10-07 11:52:41
阅读次数:
156