摘要:
一组排列就是一组N个整数的数组,其中0~N-1的每个数都只出现一次。两个排列之间的Kendall tau距离就是在两组排列中相对顺序不同的数对的数目。例如,0 3 1 6 2 5 4和1 0 3 6 4 2 5之间的Kendall tau距离是4,因为0-1、3-1、2-4、5-4这4对数字在两组排列中的相对顺序不同,但其他数字的相对顺序都是相同的。求两个指定数组的Kendall tau距离的代码如下:// 如果数组itemsB是有序数组,那么问题就转化为统计数组itemsA中的逆序对(参见《剑指Offer》面试题36)。而在一般情况下,问题可转化为统计数组itemsA中按照数组items.. 阅读全文
摘要:
在对一个链表进行随机化时,可以借鉴自顶向下归并排序的思路,先将链表划分为左右两个子链表,分别进行随机化,然后再归并两个子链表,并在归并过程中进行随机化,代码如下:// *pHead指向链表的首节点(不是头结点)void RandomizeLinkedList(Link * pHead){ int length = CountNodes(* pHead); Randomize(pHead,length); Link tail = * pHead; for(int i = 1;i next; } tail->next = NULL;}// 随机化首节点由*pHead指向,长度为... 阅读全文