这道题中要求时间复杂度为O(n),首先我们可以知道的是,如果先对数组排序再计算其最长连续序列的时间复杂度是O(nlogn),所以不能用排序的方法。我一开始想是不是应该用动态规划来解,发现其并不符合动态规划的特征。最后采用类似于LRU_Cache中出现的数据结构(集快速查询和顺序遍历两大优点于一身)来...
分类:
其他好文 时间:
2014-04-28 10:21:19
阅读次数:
1003
1.先对文件内容排序:cat 1.txt |sort > 2.txt 保存到2.txt中
2.使用vim打开2.txt 执行替换命令:
替换空格:%s/ //g
替换tab:%s/^I//g (注意:^I 是直接按键盘是的tab键)
替换$: %s/^M//g (注意:^M 是按ctrl+v 再按Enter键)
3.cat 2.txt | uniq > 3.txt
本文为...
分类:
其他好文 时间:
2014-04-27 19:07:00
阅读次数:
544
对于没有排序功能的集合来说,都可以使用java.util.Collections.sort()方法进行排序,它除了集合对象以外,还需要提供一个比较器。如果列表中的元素全部都是相同的类型,并且这个类实现了Comparable接口,就可以简单的调用Collections.sort()方法,如果这个类没有实现comparable接口,那么可以创建一个比较器传递一个Comparator实例作为Sort()...
分类:
其他好文 时间:
2014-04-27 19:03:01
阅读次数:
491
分析:这道题可以采用贪心算法。将节目按结束时间从小到大排序,然后判断能看几个节目。判断的方法是:这次要看的节目开始时间是否在上一个节目的结束时间之后,如果在之后,则可以看完,如果不在之后,就 pass 掉这次要看的节目,跳到下一个节目继续判断。例如排好序后:
第一个节目肯定可以看完;第二个节目开始时间在第一个节目结束时间之后,所以可以看完;第三四五个节目开始时间都在第二个节目结束时间之前,不能看完, pass 掉;第六个节目开始时间在第二个节目结束时间之后,可以看完;第七八个节目开始时间都在第六个节目结束时...
分类:
其他好文 时间:
2014-04-27 18:49:30
阅读次数:
576
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
Description
Find a pair in an integer array that swapping them would maximally decrease the inversion count of the array. If such a pair exists, retur...
分类:
其他好文 时间:
2014-04-27 17:48:35
阅读次数:
508