题意:给一个初始序列,有n个数。现在要对它们进行排序。第i次通过区间翻转将第i小的数翻转到正确的位置上(即第i位),输出旋转前i的位置。(语死早,凑合理解一下。。)思路就是每次将第i小的数splay到根,统计一下再删除。答案就是左子树大小加上已删除的数的个数。然后这题是有可能出现重复的数字的。。有重...
分类:
其他好文 时间:
2015-03-17 00:30:20
阅读次数:
240
题目:Sort a linked list in O(n log n) time using constant space complexity.
思路:要求时间复杂度O(nlogn)
知识点:归并排序,链表找到中点的方法
存在的缺点:边界条件多考虑!!!
/**
* LeetCode Sort List Sort a linked list in O(n log n) time us...
分类:
编程语言 时间:
2015-03-16 23:14:12
阅读次数:
260
两种方式。
1.继承Comparator接口。
实现compare方法。
public int compare(Person o1, Person o2) {
return o2.getAge().compareTo(o1.getAge());
}
2.Collections.sort方法。(建议,方便)
List list = new ArrayList();
list....
分类:
编程语言 时间:
2015-03-16 16:25:29
阅读次数:
166
def quick_sort(array): """ Returns a sorted 'array' by quick sort algorithm via list comprehension, here 'array' is actually a list. """ ...
分类:
其他好文 时间:
2015-03-16 14:12:07
阅读次数:
84
题意:
给你一棵无根树,求有多少点对之间距离
题解:
树分治。
然后对于一个重心X,我们把它的所有子树中的所有点存到结构体数组中。
结构体中存距离和子树编号。
第一遍sort,我们双指针扫哪些点对符合要求。
第二遍sort,我们把同一子树中还符合要求的点对数目删掉。
sort是O(nlogn)O(nlogn),处理是O(n)O(n)。
然后分治logn层,总时间复杂度O(nl...
分类:
其他好文 时间:
2015-03-16 13:00:34
阅读次数:
185
Given an array withnobjects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, wh...
分类:
编程语言 时间:
2015-03-16 12:23:02
阅读次数:
140
简单来说,这个技巧对应的是如下一种场景假设有文本如下cccc
aaaa
bbbb
dddd
bbbb
cccc
aaaa
现在需要对它进行去重处理,这个很简单,sort -u就可以搞定,但是如果我希望保持文本原有的顺序,比如这里有两个aaaa,我只是希望去掉第二个aaaa,而第一个aaaa在bbbb的前面,去重后仍旧要在它前面,所以我期望的输出结果是cccc
aaaa
bbbb
dddd
当然,这个...
分类:
系统相关 时间:
2015-03-16 09:49:39
阅读次数:
171
一、前言 其实排序对于前端工程师来说没有后端那么重要,不过理解排序的原理还是比较有用的。例如有些应用数据比较少量的就不需要用后台来排序,如果用php后端脚本等排序会增加后台的开销。放在前端岂不是更好,当然我们有一个前端的排序神器sort。当然也做了很多得优化,不过用sort排序还需要注意一点,s.....
分类:
编程语言 时间:
2015-03-15 22:53:45
阅读次数:
170
Oracle默认是采用binary进行排序,这对于例如中文的排序来说,是不恰当的。使用这两个参数可以指定排序的方法,比如拼音或是,要注意可能会引起性能问题。解决方法是使用NLSSORT函数来建立一个函数索引。NLS_COMP = { BINARY | LINGUISTIC | ANSI }BINAR...
分类:
其他好文 时间:
2015-03-15 18:04:34
阅读次数:
137
//快速排序
public class Quick_Sort {
// 排序的主要算法
private int Partition(int[] data, int start, int end)
{
int mid_data = data[end];// 选取最后最个数作为中间值哨兵,从开始进行遍历,每个数与之比较
int index = start; // 记录比哨兵小的数字在...
分类:
编程语言 时间:
2015-03-15 12:30:38
阅读次数:
131