【剑指offer】面试题36:数组中的逆序对
来源:互联网 发布:外围女 网络 编辑:程序博客网 时间:2024/06/09 22:54
# @left part: [start, mid]# @right part: (mid, end]def merge(data, start, mid, end):if mid < start or end < mid:return 0reverse = 0''' @ for start, it play as the start index of left part, and mid @ play as the end index of left part;@ mid + 1 (st2) play as the start index of right part, and end@ play as the end index of right part.'''#@ start of right partst2 = mid + 1while start <= mid and st2 <= end:if data[start] > data[st2]:# move data[st2] to start, and data[start, - 1]# move back by 1data.insert(start, data.pop(st2))reverse += st2 - start# [start, mid] move back by one, so start = start + 1 # and mid = mid + 1start += 1mid += 1# same as start & mid, move back by 1st2 += 1else:# no insert or move, so start = start + 1start += 1return reversedef mergeSortWithCount(data, start, end):#just one item or Node, return dirctlyif len(data) <= 1 or end <= start: return 0mid = (start + end) >> 1#@ reversepair number of left partleft = mergeSortWithCount(data, start, mid)# reversepair number of right partright = mergeSortWithCount(data, mid + 1, end)# toal count of reverse pair = left + right + {merger(left, right)}return merge(data, start, mid, end) + left + right
这个题,还可以通过线段树来实现,有兴趣的可以找一些线段树的题练一练。下面的链接是我学习线段树的第一个博客。
http://www.notonlysuccess.com/index.php/segment-tree/
0 0
- 剑指offer面试题36:数组中的逆序对
- [剑指offer][面试题36]数组中的逆序对
- 【剑指offer】面试题36:数组中的逆序对
- 剑指Offer:面试题36 数组中的逆序对
- 剑指offer 面试题36:数组中的逆序对
- 剑指offer 面试题36—数组中的逆序对
- 【剑指Offer学习】【面试题36:数组中的逆序对】
- 剑指offer-面试题36:数组中的逆序对
- 剑指offer之面试题36数组中的逆序对
- 剑指offer面试题36-数组中的逆序对
- 剑指offer面试题36:数组中的逆序对
- 剑指Offer----面试题36:数组中的逆序对
- 剑指Offer面试题36:数组中的逆序对
- 剑指offer--面试题36:数组中的逆序对
- 剑指Offer之面试题36:数组中的逆序对
- 剑指Offer---面试题36:数组中的逆序对
- 【剑指offer】面试题36-数组中的逆序对
- 剑指offer-面试题36-数组中的逆序对
- java.net.create报错改正记录
- 纪念在武汉大学青年传媒的三年时光
- Linux + Idea + Tomcat 浏览器中中文乱码解决
- json
- mini2440串口轮询实验(先简单复习一下串口轮询模式,明天把中断模式和dma模式弄清楚)
- 【剑指offer】面试题36:数组中的逆序对
- 普通人的数据科学
- 初识json------Day60
- 进程与线程原语
- PAT 2-2
- 【剑指Offer】鸟瞰50题之21 - 30题
- 【剑指offer】面试题37:两个链表的第一个公共结点
- Android自定义ScrollView分段加载大文本数据到TextView
- Android选择mqtt推送项目的案例分享