我是靠谱客的博主 阳光曲奇,最近开发中收集的这篇文章主要介绍拼多多2019算法 推荐好友(python),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目3

包含n个用户的朋友列表,对于一个指定用户,找出这个用户最可能认识的人。这个人与当前用户不是朋友,但有最多的共同好友。朋友之间的关系是相互的。如果两个用户都要同样多的共同好友,返回用户序号(从0开始)。如果和所有人都没有共同好友,返回-1.

输入描述:

用户数目 需要判断的用户序号

输出描述:

用户最可能认识的用户序号

输入:

5 0

1 2 3

0 4

0 4

0 4

1 2 3

输出:

4

思路1:将需要判断的用户和所有用户的共同好友计算,过滤掉自己的序号和已是共同好友的序号,得到共同好友最多的人。

n,id1 = map(int,input().split(' '))
tab = []
for i in range(n):
    tab.append(list(map(int,input().split(' '))))

res = tab[id1]			#取出需要判断的用户
out = [] 
for id_list in tab:
    count = 0
    for i in range(len(res)):			如果具有相同用户,加1
        if res[i] in id_list:
            count += 1
    out.append(count)

out[id1] = 0       #需要判断的用户设为0


while True:
    id_out = out.index(max(out))    #取最大值序号(当前共同好友最多的序号)
    if id_out==0:
        print(-1)
        break
    if id_out in res:				#如果当前序号已经是好友,将该序号设为0,继续
        out[id_out]=0
    else:
        print(id_out)
        break

思路2:先过滤掉已经是好友的人的序号,计算剩下的人的与需要判断的用户序号的共同好友数,取出最大的。

n = 5
id_in = 1
tab = [[1,2,3],
       [0,4],
       [0,4],
       [0,4],
       [1,2,3]]

id_in_f = tab[id_in]

pos = -1
max_count = 0
for i in range(len(tab)):
    if i in id_in_f or i==id_in :
        continue
    else:
        for key in tab[i]:
            count = 0
            if key in id_in_f:
                count += 1
        if count > max_count:
            max_count = count
            pos = i
            
if max_count == 0:
    print(-1)
else:
    print(pos)
            

 

最后

以上就是阳光曲奇为你收集整理的拼多多2019算法 推荐好友(python)的全部内容,希望文章能够帮你解决拼多多2019算法 推荐好友(python)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部