n個人之間存在m個關係對,關係具有傳遞性,假如a關注b,b關注c,那麼a就間接關注了c。如果乙個人被除他之外的所有人都直接或間接關注,那麼這個人就是抖音紅人,求抖音紅人的總數。
將使用者之間的關注關係使用乙個字典表示,key為被關注的使用者,value為關注此使用者的使用者,遍歷每個key的value中的使用者,補充間接關注關係,最後判斷哪個使用者的len(value)為使用者總數,則該使用者為抖音紅人。
# -*- coding:utf-8 -*-
import collections
def split_guanxi(gx_list, num):
gx_dict = collections.defaultdict(set) # key表示使用者,value為list,表示誰關注了他
for i, x in enumerate(gx_list):
if i % 2 != 0: # 奇數表示拿到的是關注的物件 奇數前面的偶數表示關注此物件的人
# 把自己加入進來
gx_dict[x].add(x)
gx_dict[x].add(gx_list[i-1])
# 需要多次檢測,因為有間接的關注關係,乙個使用者最多依次被num個使用者關注(包括自己),因此迴圈num次
for i in range(int(num)):
for star, user in gx_dict.iteritems(): # star 表示被關注的人, user表示關注者
add_people = set()
for x in user:
if x in gx_dict:
add_people |= gx_dict[x]
gx_dict[star] |= add_people
star_num = 0
for star, user in gx_dict.iteritems():
if len(user) == int(num):
star_num += 1
return star_num
if __name__ == "__main__":
n = raw_input()
m = raw_input()
guan_xi = raw_input().split(' ')
print split_guanxi(guan_xi, n)
位元組跳動技術美術面試(抖音)
龍與地下城 dp 兩個陣列合併去重 渲染管線 頂點著色器作用,包括什麼工作,mvp矩陣空間變換過程 m矩陣中旋轉 平移 縮放順序,分別在m矩陣的哪個部分,如何從m矩陣拆分獲得三個變換矩陣,拆分順序 頂點著色器到片元著色器中間流程 幾何著色器的作用,頂點著色器傳輸給幾何著色器什麼資料 在dcc軟體中,...
頭條《抖音紅人》筆試題
題目如下 先挖個坑,稍後來寫解題思路。來填坑了 本題採用二維陣列a i j 下表代表使用者i關注了j,陣列的值為1代表該關注關係成立,且a i i 1永遠成立,然後統計被關注的總數,若為n,即是網紅。如下 include using namespace std int main cnt 0,sum ...
位元組跳動面試題
位元組跳動面試題 http協議 http協議是乙個應用層的協議,由請求和響應構成,使用統一資源識別符號來傳遞資料和建立連線 一次http請求的基本流程一般是,在建立tcp連線後,由客戶端向服務端發起一次請求 request 而伺服器在接收到以後返回給客戶端乙個響應 response 所以我們看到的h...