/** * 描述: * 实现一个算法,确定一个字符串的所有字符是否全都不同。 * 假使不允许使用额外的数据结构,又该如何处理? * 细节:1)unicode字符集还是ASCII字符集 * 2)若是ASCII编码,长度大于256,则直接返回false */ /** *使用位运算,减少空间复杂度 */ ...
分类:
编程语言 时间:
2016-03-27 19:36:48
阅读次数:
166
题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=12055 由于n<=15, 所以可以很明显猜测出这道题可能可以用状态压缩dp来求解。 问题的关键是:dp的状态要如何设计才能既达到目的,又能减少时间、空间复杂度。 最容易想 ...
分类:
其他好文 时间:
2016-03-24 14:41:50
阅读次数:
119
趁着有时间把学习过的排序算法又实现了一遍复习一下,实现的排序算法主要有以下几种:冒泡排序、快速排序,选择排序,堆排序,插入排序,合并排序,希尔排序,桶排序等。 下面是网上找的一张图片,总结了常见排序算法的时间复杂度、空间复杂度以及稳定性,可以参考一下。 下面排序的都是vector<int>,懒得写模
分类:
编程语言 时间:
2016-03-21 01:40:06
阅读次数:
336
衡量一个算法的好坏,需要从时间复杂度和空间复杂度去考虑。时间复杂度就是这个算法需要执行的基本指令的次数,空间复杂度就是这个算法需要占用的内存空间的大小。很明显,在完成同样工作的前提下,执行的指令次数越少,占用的内存空间越少,这个算法就越好。 时间复杂度 怎么算时间复杂度? 算法复杂度由2个函数复合而
分类:
编程语言 时间:
2016-03-20 13:10:02
阅读次数:
205
1.时间复杂度 算法的时间复杂度是衡量一个算法效率的基本方法。在阅读其他算法教程书的时候,对于算法的时间复杂度的讲解不免有些生涩,难以理解。进而无法在实际应用中很好的对算法进行衡量。 《大话数据结构》一书在一开始也针对算法的时间复杂度进行了说明。这里的讲解就非常明确,言简意赅,很容易理解。下面通过《
分类:
编程语言 时间:
2016-03-19 21:16:33
阅读次数:
254
设计一个算法,将链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求算法的空间复杂度为O(1)。
分类:
其他好文 时间:
2016-03-16 12:21:16
阅读次数:
158
题目: 一个环形单链表从头节点head开始不降序,同时由最后的节点指回头节点。给定这样一个环形单链表的头节点head和整数num,请生成节点值为num的新节点,并插入到这个环形链表中,保证调整后的链表依然有序。 要求时间复杂度为O(N),额外空间复杂度为O(1)。 分析: 本题不算是很难,但是要注意...
分类:
编程语言 时间:
2016-03-08 23:23:00
阅读次数:
183
现有如下题目:有一个海量文本,存储的是汉语词语,要求从中找出前K个出现频率最高的词语,写出最优算法,兼顾时间和空间复杂度。 思路分析:熟悉搜索引擎的程序员,应该不是难题。用传统的HashMap是无法解决的,因为数据量非常庞大的时候,空间复杂度会导致程序运行时,频繁执行MinorGC和MajorGC,
分类:
其他好文 时间:
2016-03-08 19:38:27
阅读次数:
146
1、HashMap的数据结构(HashMap通过hashcode对其内容进行高速查找,是无序的) 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 :数组的存储区是连续的,占用内存严重,故空间复杂度非常大。但数组的二分查找时间度小;数组的特点:寻址easy,插入和 删除困难
分类:
其他好文 时间:
2016-03-08 16:11:09
阅读次数:
167
题目: 分别实现反转单向链表和双向链表的函数。 要求: 如果链表长度为N,时间复杂度为O(N),额外空间复杂度要求为O(1)。 程序: 反转单向链表:public class Node{ public Node(int data){ this.value=data; } public int val...
分类:
编程语言 时间:
2016-03-07 18:44:40
阅读次数:
194