注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
[體恤一下打字的苦勞,加點大米不扣您自己分數,謝謝!] 趁著還有點記憶,來分享一下今天跟Dropbox電面,
面試官問到了高頻 duplicate files 題目
follow-ups:
- 檔案太大算不出輸出的時候,
在同一個array的檔案 再去比較 md5
- grouping_by_size = defaultdict(list)
- Q = [init_folder]
- # Q 存放 folders.
- while Q:
- next_q = []
- item = Q.popleft()
- for file in listFile(item):
- if is_folder?(file):
- next_q.add(file)
- else:
- grouping_by_size[get_size(file)].append(file)
- Q+=next_q[:]
- # Process output
- output = []
- for file_size, duplicating_candidates in grouping_by_size.items():
- if len(duplicating_candidates) > 1:
- grouping_by_md5 = defaultdict(list)
- for candidate_file in duplicating_candidates:
- md5_val = get_md5(candidate_file)
- grouping_by_md5[md5_val].append(candidate_file)
- for md5_val, duplicating_files in grouping_by_md5.items():
- if len(duplicating_files)>1:
- output.append(duplicating_files)
- return output
复制代码
|