Sort a linked list in O(n log n) time using constant space complexity. Example 1: Example 2: 解法:归并排序。由于有时间和空间复杂度的要求。把链表从中间分开,递归下去,都最后两个node时开始合并,返回上一层 ...
分类:
编程语言 时间:
2018-09-08 15:26:38
阅读次数:
124
这道题 要想解决其实不难, 开两层循环进行遍历就能实现,但是会超时 如果想要O(n) 的时间复杂度, 我考虑用哈希表来存储遍历过的元素,如果发现当前遍历的元素在哈希表里,那说明交叉点就在这 这里利用了哈希表的查找时间是O(1) 但是这种算法不能满足空间复杂度是O(1)的要求 代码像这样: 经过一段时 ...
分类:
编程语言 时间:
2018-09-08 11:50:00
阅读次数:
158
题目说明 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 解法1 使用归并排序对链表进行排序 / 时间复杂度:O(nlogn) 归并排序的递归实现 / ListNode sortList(ListNode head) { if (head == NULL || head ...
分类:
其他好文 时间:
2018-09-05 09:15:20
阅读次数:
118
原文地址:https://blog.csdn.net/Mars93/article/details/75194138 作者:Mars93 在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时 ...
分类:
其他好文 时间:
2018-09-05 00:53:56
阅读次数:
169
题目描述 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。 进阶:你可以在常数空间复杂度内完成这个题目吗 ...
分类:
编程语言 时间:
2018-09-03 13:44:02
阅读次数:
154
思想 每次在现有已经排好的数组的基础上排入一个新的数组项。 先把第一项看做是已经排好的,第二项应该排在第一项之前还是之后呢?当前两项排好后,第三项应该排在这已排好的两项的之前还是之后还是中间呢?当前三项排好后,第四项应该排在这已排好的三项中的什么位置呢?...以此类推。 在把新的一项排入已排好的数组 ...
分类:
编程语言 时间:
2018-09-02 20:28:07
阅读次数:
158
目的:掌握 排序算法的分类及不同算法复杂度的对比、搞清楚 XXX与数组初始状态无关分为几种情况: a、算法复杂度与初始状态无关; b、元素总比较次数与初始状态无关; c、元素总移动次数与初始状态无关。 1、算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次 ...
分类:
编程语言 时间:
2018-09-02 13:58:29
阅读次数:
162
直接做的话用中序遍历做即可,但是要求空间复杂度O(1),所以不行 方法一:Recursive 和往常的递归写起来不太一样,这里一定要先将root的左右儿子连接起来,后面递归才能继续连接。如果不算递归所用栈的空间的话O(1)。 方法二:Non-recursive 每次连接下一层的node,通过next ...
分类:
其他好文 时间:
2018-08-30 10:55:30
阅读次数:
155
网上大部分是使用的bitmap算法。大体思路是:一个字节(Byte) 在计算机中占8位(bit),每个位(bit)可以表示一个数字,1表示含有,0表示不含有。1个32位系统的int类型可以存储2的32次方个bit位,大约是42亿多点。这样40亿需要 40/8=5亿字节,1M =1024KB*1024 ...
分类:
其他好文 时间:
2018-08-28 10:34:17
阅读次数:
321
1、最长的重复子串 寻找一个字符串中最长的重复子串 最大后缀方法思路: 1. 用字符串指针数组保存用户输入的字符串的所有后缀字符串; 2. 将后缀字符串集合进行排序; 3. 比较相邻字符串的公共子串长度,找到长度最大值,保存相应字符串即为所求 空间复杂度:求长度为n的字符串的后缀,需要O(n)的空间 ...
分类:
其他好文 时间:
2018-08-27 12:46:32
阅读次数:
165