力扣竞赛勋章 | 排名分数计算脚本

news2024/12/27 18:27:08

文章目录

  • 力扣竞赛勋章介绍
  • 竞赛评分算法
  • 脚本(本文的重点内容)
  • 运行结果

代码修改自:https://leetcode.cn/circle/discuss/6gnvEj/
原帖子的代码无法正常运行。

力扣竞赛勋章介绍

https://leetcode.cn/circle/discuss/0fKGDu/

在这里插入图片描述

如果你想知道自己上多少分可以拿到对应的勋章,那么篇文章会解决你的问题!

竞赛评分算法

https://leetcode.cn/circle/article/neTUV4/

脚本(本文的重点内容)

#!/usr/bin/env python3

import json
import sys

import requests

# 力扣目前勋章的配置
RATING = 1600       # 从1600分以上才开始算人
GUARDIAN = 0.05
KNIGHT = 0.25
# 查询的地址为全国还是全球?很关键
GLOBAL = False
# 二分查找的右端点(可自调)
RIGHT = 3000


def fetch_lastest_ranking(mode):
    l, r = 1, RIGHT
    retry_cnt = 0
    ansRanking = None
    while l < r:
        cur_page = (l + r + 1) // 2
        try:
            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'},
                                 json=payload).json()

            resp = resp['data']['localRanking'] if not GLOBAL else resp['data']['globalRanking']
            # no more data
            if len(resp['rankingNodes']) == 0:
                break
            if not mode:
                top = int(resp['rankingNodes'][0]['currentRating'].split('.')[0])
                if top < RATING:
                    r = cur_page - 1
                else:
                    l = cur_page
                    ansRanking = resp['rankingNodes']
            else:
                top = int(resp['rankingNodes'][0]['currentGlobalRanking'])
                if top > mode:
                    r = cur_page - 1
                else:
                    l = cur_page
                    ansRanking = resp['rankingNodes']

            print('The first contest current rating in page {} is {} .'.format(cur_page, resp['rankingNodes'][0][
                'currentRating']))
            retry_cnt = 0
        except:
            print(f'Failed to retrieved data of page {cur_page}...retry...{retry_cnt}')
            retry_cnt += 1
    ansRanking = ansRanking[::-1]
    last = None
    if 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 last


class 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) {
                        totalUsers
                        userPerPage
                        rankingNodes {
                            currentRating
                            currentGlobalRanking
                        }
                    }
                }
                ''' if not GLOBAL else
            r'''{
                    globalRanking(page: 1) {
                        totalUsers
                        userPerPage
                        rankingNodes {
                            currentRating
                            currentGlobalRanking
                        }
                    }
                }
            '''
    }


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/734876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Elasticsearch】初识elasticsearch

目录 初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK技术栈 1.1.3.elasticsearch和lucene 1.1.4.为什么不是其他搜索技术&#xff1f; 1.1.5.总结 1.2.倒排索引 1.2.1.正向索引 1.2.2.倒排索引 1.2.3.正向和倒排 1.3.es的一些概念 1.3.1.文档…

前端各种方法自我整理

Javascript方法 slice [slaɪs]切片 slice (-2)取出数组中倒数两个植变生成一个新数组 slice(0&#xff0c;3)取出数组下标0到下标3的值&#xff0c;生成新数组 includes [ɪnˈkluːdz]包含 查看数组或字符串内是否有该值&#xff0c;有返回true,无返回false 例子&#…

Vue--》Vue3打造可扩展的项目管理系统后台的完整指南(十二)完结篇

今天开始使用 vue3 + ts 搭建一个项目管理的后台,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏…

linux常用压缩/解压缩命令的使用

目录 gzipbzip2tar gzip gzip 的常用选项&#xff1a; -l(list) 列出压缩文件的内容。 -k(keep) 在压缩或解压时&#xff0c;保留输入文件。 -d(decompress) 将压缩文件进行解压缩。 如果 gzip 不加任何选项&#xff0c;此时为压缩。压缩完该文件会生成后缀为.gz 的压缩文…

java读取excel,指定列A列为空,将下方空行上移,并将指定列F列数据拼接

java读取excel&#xff0c;将空行上移 改造前&#xff1a; 效果图&#xff1a; 上代码&#xff1a; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream; import java.io.FileOutputStream; import jav…

SqueezeNet算法解析—鸟类识别—Paddle实战

文章目录 一、理论基础1.前言2.设计理念2.1 CNN微架构&#xff08;CNN MicroArchitecture&#xff09;2.2 CNN宏架构&#xff08;CNN MacroArchitecture&#xff09;2.3 模型网络设计探索过程2.4 结构设计策略2.5 Fire模块 3.网络结构4.评估分析 二、实战1.数据预处理2.数据读取…

树莓派登录密码忘记了怎么办????

我们常常会不记得我们的密码&#xff0c;比如说我近期想玩一下我们树莓派开发版&#xff0c;登录的时候忘记了怎么办&#xff0c;第一想到的就是重刷系统&#xff0c;从头再来&#xff0c;今天我给大家带来了一个解决忘记了登录密码如何去修改它&#xff0c;从而进入系统里。 …

分享一款超级好用的下载软件,IDM--不限速,破解版,IDM破解版下载安装

本片文章分为四个部分&#xff1a; 第一部分&#xff0c;下载安装IDM 第二部分&#xff0c;IDM破解 第三部分&#xff0c;浏览器插件的安装 第四部分&#xff0c;百度网盘使用IDM下载 下载IDM 首先大家可以在浏览器搜索IDM 网址&#xff1a;https://www.internetdownloadma…

Zynq PS无法读取SD卡(TF卡)异常分析及如何读写SD卡

最近我正在进行一个Zynq项目&#xff0c;我使用了Xilinx SDK自带的系统库函数来读取SD卡中的配置信息。然而&#xff0c;一直读取异常。 我进行了一系列的调试和检查&#xff0c;包括确认PS部分的代码正确性以及Xilffs的配置是否正确&#xff0c;但是问题仍然没有解决。最后&am…

NYDIG最新报告:比特币今年上半年回报率达83.6%,远超其他资产类别

本文要点&#xff1a; 比特币的强劲势头延续到了二季度&#xff0c;本季度比特币上涨 6.8%&#xff0c;年初至今上涨 83.6%。 二季度末&#xff0c;一系列新的现货比特币 ETF 申请&#xff08;尤其是 ETF 巨头贝莱德的申请&#xff09;提振了比特币价格。 在多家机构提交现货 B…

POI下载excel通用方法

POI下载excel通用方法 最近遇到一个业务是需要下载excel&#xff0c;使用POI,这里记录一下实现过程 1、导包 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency>…

本周大新闻|传微软曾考虑收购Niantic;腾讯引进Quest挑战重重

本周XR大新闻&#xff0c;AR方面&#xff0c;传微软曾考虑收购AR头部公司Niantic&#xff1b;Q-PIXEL公布5000PPI可调色Micro LED&#xff1b;三星智能眼镜商标曝光&#xff1b;Humane公布首款产品Ai Pin&#xff1b;空客推企业级AR解决方案。 VR方面&#xff0c;Vision Pro销…

边缘计算那些事儿-漫谈网络切片关键技术

0、背景 网络切片作为一种比较前沿的技术&#xff0c;当前并没有太多系统的资料可以学习&#xff0c;很多的技术资料都是比较分散地分布在论文和一些技术博客中&#xff0c;笔者当前是通过论文的解读获取相关的技术信息&#xff0c;在过程中笔者总结了相关的技术栈&#xff0c;…

pytorch多分类问题 CrossEntropyLoss()函数的输入size/shape不一致问题

在使用pytorch实现一个多分类任务的时候&#xff0c;许多多分类任务在训练过程中都会有如下的代码&#xff1a; criterion nn.CrossEntropyLoss() loss criterion(output, target) # output.size : [batch_size, class_num] # target.size : [batch_size]许多的初学者会卡在…

Kubernetes 容器类型 Init - pause - sidecar - app容器

目录 Kubernetes 的容器类型 Init 初始化容器 参考文档&#xff1a;Init 容器 | Kubernetes 使用 Init 容器的情况 案例&#xff1a;定义了一个具有 2 个 Init 容器的简单 Pod 你通过运行下面的命令启动 Pod&#xff1a; 发现两个Init容器都没有运行成功 查看更多详细…

一些行业报告--From 艾瑞咨询

一些行业报告--From 艾瑞咨询 1 介绍2 机械臂行业研究 [From 艾瑞咨询 -- 中国工业机器人行业研究报告&#xff08;2023&#xff09;2.1 发展历程2.2 中国工业机器人相关政策2.3 产业链2.4 三大部分六大系统2.5 伺服&控制器 主要玩家 及 关键指标及难点2.6 减速机 主要玩家…

mysql中根据已有的表来创建新表的三种方式

mysql根据现有表创建新表 1、语法1&#xff1a;CREATE TABLE new_tbl LIKE orig_tbl; 1、1 根据departments表创建新表departments1 departments 表结果和表数据库如下 创建departments1如下 使用命令&#xff1a; CREATE TABLE departments1 LIKE departments; 这种语法&…

GEE:在地图上添加时间滑动条,以交互式可视化不同年份影像

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine(GEE)平台上的地图显示区域创建一个交互式界面,可以为用户添加一个时间滑动条,通过滑动条可以选择显示不同年份的遥感影像。 结果如下图所示, 文章目录 一、代码二、代码链接一、代码 // 使用滑块从图像集合中选…

Auto-Rig Pro 手指控制器骨骼(IK-FK)

选中手指控制器骨骼,在tool面板里看到snap IK-FK, IK-FK,还有snap all to IK 和 FK: 这些都是Auto-Rig Pro提供的一些工具&#xff0c;可以让您在IK&#xff08;反向动力学&#xff09;和FK&#xff08;正向动力学&#xff09;之间切换和同步。IK和FK是两种不同的绑定方式&…

43. 间断连续登录用户问题

文章目录 题目需求思路一实现一题目来源 题目需求 现有各用户的登录记录表&#xff08;login_events&#xff09;如下&#xff0c;表中每行数据为&#xff1a;一个用户何时登录了平台。 现要求统计各用户最长的连续登录天数&#xff0c;间断一天也算作连续&#xff0c;例如&a…