https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=452567
就是找朋友那道题,地里有面经。就是给你一个功能, 获取好友, 可以返回这个user的所有好友。 要求你: 1 返回两个用户的共同好友。 2 让你实现一个推荐好友的功能。比如, 如果好友1 是 好友2 的好友, 好友2 是 好友3的好友,则好友3是好友1的推荐好友。要求返回好友1的所有推荐好友,并且把他们按照共同好友的数目来排序
1. getMutualFriends() 给你⼀一⼀一个getfriends的function然后写找共同好友
2. suggest() 排序好友的好友,谁共同好友多就放前⾯面⾯面。
1. Set->Map->Bucket
在这里的优势就是复杂度优势
BucketSort往往需要自行划分Bucket区域,还需要在Bucket内部进行排序,因此对数据是否uniformly distributed和空间会有要求
而这题里面公共好友数量可以直接作为下标使用,空间为O(n)不变,Bucket内部也不用担心顺序从而无需再次排序,所以时间也为O(n)
虽说相比QuickSort的O(nlogn)在实际运行中提升的效率不大,但算法面试中往往关心的是理论复杂度
HashMap统计次数 然后用BucketSort排序
就是找朋友那道题,地里有面经。就是给你一个功能, 获取好友, 可以返回这个user的所有好友。 要求你: 1 返回两个用户的共同好友。 2 让你实现一个推荐好友的功能。比如, 如果好友1 是 好友2 的好友, 好友2 是 好友3的好友,则好友3是好友1的推荐好友。要求返回好友1的所有推荐好友,并且把他们按照共同好友的数目来排序
1. getMutualFriends() 给你⼀一⼀一个getfriends的function然后写找共同好友
2. suggest() 排序好友的好友,谁共同好友多就放前⾯面⾯面。
1. Set->Map->Bucket
在这里的优势就是复杂度优势
BucketSort往往需要自行划分Bucket区域,还需要在Bucket内部进行排序,因此对数据是否uniformly distributed和空间会有要求
而这题里面公共好友数量可以直接作为下标使用,空间为O(n)不变,Bucket内部也不用担心顺序从而无需再次排序,所以时间也为O(n)
虽说相比QuickSort的O(nlogn)在实际运行中提升的效率不大,但算法面试中往往关心的是理论复杂度