microsoft software test

give a sequence and each element is less than 2,000,000. there maybe exist reverse orde pair in the sequence . a reverse order pair is defined as a pair consisting of 2 elements: A and B, A appearing before B and A>B. Now what we should do is to find these reverse order pairs in the given sequence and the time complexity must be O(nlogn) or less.

hint: sorting and tree data structure can be used to solve the problem

 

my idea: use sorted binary tree to store the elements of the sequence and if there is no reverse pair in the sequence then no left subtree will exist. so what we should do is to count the depth of left subtree for every node in the sorted binary tree.

 

code:write a sorted binary tree and then traverse the tree in a depth-first way. for each node visited calculate the depth of left subtree of the node and count them all as total number of reverse order pairs. 

major function: findPair,ldepth

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值