做新网站 备案证明交接,东莞寮步最新通知,新科网站建设,软件外包服务是什么意思文章目录 力扣竞赛勋章介绍竞赛评分算法脚本#xff08;本文的重点内容#xff09;运行结果 代码修改自#xff1a;https://leetcode.cn/circle/discuss/6gnvEj/ 原帖子的代码无法正常运行。
力扣竞赛勋章介绍
https://leetcode.cn/circle/discuss/0fKGDu/ 如果你想知道自… 文章目录 力扣竞赛勋章介绍竞赛评分算法脚本本文的重点内容运行结果 代码修改自https://leetcode.cn/circle/discuss/6gnvEj/ 原帖子的代码无法正常运行。
力扣竞赛勋章介绍
https://leetcode.cn/circle/discuss/0fKGDu/ 如果你想知道自己上多少分可以拿到对应的勋章那么篇文章会解决你的问题
竞赛评分算法
https://leetcode.cn/circle/article/neTUV4/
脚本本文的重点内容
#!/usr/bin/env python3import json
import sysimport requests# 力扣目前勋章的配置
RATING 1600 # 从1600分以上才开始算人
GUARDIAN 0.05
KNIGHT 0.25
# 查询的地址为全国还是全球很关键
GLOBAL False
# 二分查找的右端点(可自调)
RIGHT 3000def fetch_lastest_ranking(mode):l, r 1, RIGHTretry_cnt 0ansRanking Nonewhile l r:cur_page (l r 1) // 2try:payload RankingCrawler._REQUEST_PAYLOAD_TEMPLATE.copy()payload[query] payload[query].replace(page: 1, page: {}.format(cur_page))resp requests.post(RankingCrawler.URL,headers{Content-type: application/json},jsonpayload).json()resp resp[data][localRanking] if not GLOBAL else resp[data][globalRanking]# no more dataif len(resp[rankingNodes]) 0:breakif not mode:top int(resp[rankingNodes][0][currentRating].split(.)[0])if top RATING:r cur_page - 1else:l cur_pageansRanking resp[rankingNodes]else:top int(resp[rankingNodes][0][currentGlobalRanking])if top mode:r cur_page - 1else:l cur_pageansRanking resp[rankingNodes]print(The first contest current rating in page {} is {} ..format(cur_page, resp[rankingNodes][0][currentRating]))retry_cnt 0except:print(fFailed to retrieved data of page {cur_page}...retry...{retry_cnt})retry_cnt 1ansRanking ansRanking[::-1]last Noneif not mode:while ansRanking and int(ansRanking[-1][currentRating].split(.)[0]) 1600:last ansRanking.pop()else:while ansRanking and int(ansRanking[-1][currentGlobalRanking]) mode:last ansRanking.pop()return lastclass RankingCrawler:URL https://leetcode.com/graphql if GLOBAL else https://leetcode-cn.com/graphql_REQUEST_PAYLOAD_TEMPLATE {operationName: None,variables: {},query:r{localRanking(page: 1) {totalUsersuserPerPagerankingNodes {currentRatingcurrentGlobalRanking}}} if not GLOBAL elser{globalRanking(page: 1) {totalUsersuserPerPagerankingNodes {currentRatingcurrentGlobalRanking}}}}if __name__ __main__:crawler RankingCrawler()ans fetch_lastest_ranking(0)n int(ans[currentGlobalRanking])guardian fetch_lastest_ranking(int(GUARDIAN * n))knight fetch_lastest_ranking(int(KNIGHT * n))if not GLOBAL:guardian[currentCNRanking] guardian[currentGlobalRanking]guardian.pop(currentGlobalRanking)knight[currentCNRanking] knight[currentGlobalRanking]knight.pop(currentGlobalRanking)print(Done!)print()print(目前全{}1600分以上的有{}人.format(球 if GLOBAL else 国, n))print(根据这个人数我们得到的Guardian排名及分数信息为:{}.format(guardian))print(根据这个人数我们得到的Knight排名及分数信息为:{}.format(knight))sys.exit()
运行结果
运行结果大致如下
C:\Users\fengwei\anaconda3\python.exe D:/study_folder/研究生课程/深度学习/my_work/论文分享/leetcode.py
The first contest current rating in page 1501 is 1557 .
The first contest current rating in page 751 is 1676 .
The first contest current rating in page 1126 is 1603 .
The first contest current rating in page 1313 is 1578 .
Failed to retrieved data of page 1219...retry...0
The first contest current rating in page 1219 is 1589 .
The first contest current rating in page 1172 is 1596 .
The first contest current rating in page 1149 is 1599 .
The first contest current rating in page 1137 is 1601 .
The first contest current rating in page 1143 is 1600 .
The first contest current rating in page 1146 is 1599 .
The first contest current rating in page 1144 is 1600 .
The first contest current rating in page 1145 is 1600 .
The first contest current rating in page 1501 is 1557 .
The first contest current rating in page 751 is 1676 .
The first contest current rating in page 376 is 1821 .
The first contest current rating in page 188 is 1978 .
The first contest current rating in page 94 is 2143 .
The first contest current rating in page 47 is 2308 .
The first contest current rating in page 70 is 2216 .
The first contest current rating in page 58 is 2260 .
The first contest current rating in page 64 is 2238 .
The first contest current rating in page 61 is 2249 .
The first contest current rating in page 59 is 2257 .
The first contest current rating in page 1501 is 1557 .
The first contest current rating in page 751 is 1676 .
The first contest current rating in page 376 is 1821 .
The first contest current rating in page 188 is 1978 .
The first contest current rating in page 282 is 1887 .
The first contest current rating in page 329 is 1851 .
The first contest current rating in page 305 is 1870 .
The first contest current rating in page 293 is 1878 .
The first contest current rating in page 287 is 1883 .
The first contest current rating in page 290 is 1881 .
The first contest current rating in page 288 is 1882 .
Done!目前全国1600分以上的有28612人
根据这个人数我们得到的Guardian排名及分数信息为:{currentRating: 2260, currentCNRanking: 1430}
根据这个人数我们得到的Knight排名及分数信息为:{currentRating: 1883, currentCNRanking: 7153}Process finished with exit code 0
可以看出 1883 以上可以得到 Knight 2260 以上可以得到 Guardian