[算法]笔杆与笔帽配对问题

题目描述:有n个笔,由笔杆和笔帽组成,每根笔的笔杆和笔帽都不同,现将笔杆和笔帽全部拆散,笔杆与笔杆不能比较,笔帽与笔帽也不能比较,笔杆和笔帽可以进行配对,每次配对都可以知道笔杆对应的笔帽大了或是小了或是刚刚好。如何将这n个笔杆和n个笔帽重新全部配对。

解题思路:用n^2的复杂度可以将n个笔杆和n个笔帽全部试一遍,当然这不是一个比较好的方法,猜测问题应该可以用nlogn的复杂度求解。常用的nlogn求解基本都是用到分治的思想。

题目解答:在笔杆中先取出一支笔杆,遍历所有笔帽,把小的笔帽放在左边,大的笔帽放在右边,合适的笔帽取出。再对合适的笔帽遍历所有笔杆,需要小笔帽的放在左边,需要大笔帽的放在右边。我们可以得出结论:小笔帽的个数和需求小笔帽笔杆的个数相等,大笔帽的个数和需求大笔帽笔杆的个数相等。再用相同的办法把小笔帽和需求小笔帽笔杆进行操作,大笔帽和需求大笔帽笔杆进行操作,最终把所有笔杆和笔帽复原。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值