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

文章目录

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

代码修改自: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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

宝塔 安装/使用/备份数据 Jenkins-图文小白教程

一、Jenkins包下载 大家可以从Jenkins官网&#xff08;https://www.jenkins.io/&#xff09;根据自己的需要下载最新的版本。 但Jenkins官网下载较慢&#xff0c;容易造成下载失败。可以去国内的开源镜像网站下载Jenkins最新版本。目前博主使用的是清华大学的开源镜像网站&…

【youcans动手学模型】SENet 模型及 PyTorch 实现

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans动手学模型】SENet 模型 【经典模型】SENet 模型-Cifar10图像分类1. SENet 卷积神经网络模型1.1 模型简介1.2 论文介绍1.3 分析与讨论 2. 在 PyTorch 中定义 SENet 模型类2.1 定义 SE Block…

【ElasticSearch】JavaRestClient实现索引库和文档的增删改查

文章目录 一、RestClient1、什么是RestClient2、导入demo工程3、数据结构分析与索引库创建4、初始化JavaRestClient 二、RestClient操作索引库1、创建索引库2、删除索引库3、判断索引库是否存在 三、RestClient操作文档1、新增文档2、查询文档3、修改文档4、删除文档5、批量导入…

Linux之CentOS_7.9卸载MySQL_5.7全过程实操手册

前言&#xff1a;接以上&#xff0c;前面记录了Windows和Linux环境的MySQL部署&#xff0c;那我们既然都部署完成验证测试那就来个卸载记录吧&#xff0c;便于闭环收尾。 环境&#xff1a; 1、CentOS-7.9-x86_64-DVD-2009.iso 2、MySQL-5.7.42-linux-glibc2.12-x86_641、关闭…

langchain系列1- langchain-ChatGLM

源码阅读 1 服务启动 (demo.queue(concurrency_count3).launch(server_name0.0.0.0,server_port7860,show_apiFalse,shareFalse,inbrowserFalse))这部分代码使用了 Gradio 库提供的两个函数&#xff1a;queue 和 launch。 在这里&#xff0c;demo 是一个 Interface 类的实例…

计算机网络 day3 广播风暴 - VLAN - Trunk

目录 广播风暴&#xff1a; 1.什么是广播风暴&#xff1f; 2.危害&#xff1a; 3.防范 STP生成树协议&#xff1a;(72条消息) 生成树协议 — STP_生成树协议步骤_一下子就醒了的博客-CSDN博客 VLAN&#xff1a; VLAN是什么&#xff1f; VLAN起到的作用&#xff1a; 广…

ChatGPT落地场景探索-数据库与大模型

目录 openGauss介绍 openGauss介绍 数据库与大模型 openGauss介绍 大模型与数据库 大模型为数据库带来的机遇 大模型解决数据库问题的挑战 数据库为大模型带来的价值 大模型大模型的发展趋势 趋势产品&#xff1a;Chat2DB 简介 特性 生产应用&#xff1a;基…

SpringBoot项目模块间通信的两种方式

说明&#xff1a;在微服务架构开发中&#xff0c;一个请求是通过模块之间的互相通信来完成的&#xff0c;如下面这个场景&#xff1a; 创建两个子模块&#xff1a;订单模块&#xff08;端口8081&#xff09;、用户模块&#xff08;端口8082&#xff09;&#xff0c;两个模块之…

设计模式--------行为型模式

行为型模式 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式&#xff0c;前者采用继承机制来在类间…

VSCODE VUE3 element-ui plaus 环境搭建

目录 一、VUE 1、安装VUE 2、创建项目 二、Element Plus 1、在项目目录中安装 Element Plus&#xff0c;执行 2、引入element 三、vscode 中运行 1、打开项目文件夹 2、点击debug&#xff0c;运行 1&#xff09;、首次lanch chrome时 2&#xff09;、lanch node.js …

MyCat2介绍以及部署和读写分离/分库分表(MyCat2.0)

一&#xff0c;MyCat入门 1.什么是mycat 官网&#xff1a;http://www.mycat.org.cn/​ mycat是数据库中间件 它可以干什么&#xff1f; 读写分离数据分片&#xff1a;垂直拆分&#xff0c;水平拆分多数据源整合 2.数据库中间件 ​ 中间件&#xff1a;是一类连接软件组件和…

十五、flex弹性元素的样式

目录&#xff1a; 1. 基本布局 2. 弹性元素的属性&#xff1a;flex-grow 3. 弹性元素的属性&#xff1a;flex-shrink 4. 弹性元素的属性&#xff1a;flex-basis 5. flex 统一设置这3个属性&#xff08;常用&#xff09; 6. order 一、基本布局 <style>*{margin: 0;paddin…

Arcgis之Python的Arcpy的点线面对象的创建处理和通过pandas读取txt中的经纬度坐标创建几何对象

前言 本节将介绍点线面对象的创建和处理。创建点对象有三个类&#xff0c;分别是Point、Multipoint、PointGeometry&#xff0c;创建线对象的类为Polyline&#xff0c;创建面对象的类为Polygon。 一、点对象的创建——Point 点对象经常与光标配合使用。点要素将返回单个点对…

抖音seo矩阵系统源码|需求文档编译说明(技术)

1.抖音seo矩阵系统文档开发流程 抖音SEO矩阵指的是一系列通过搜索引擎优化&#xff08;SEO&#xff09;技术和策略来提升抖音账号在搜索结果中排名的方法和工具。在抖音上&#xff0c;用户可以通过搜索关键词来查找与其相关的视频和账号。因此&#xff0c;抖音SEO矩阵的主要目…

Java阶段四Day11

Java阶段四Day11 文章目录 Java阶段四Day11Spring AOPElasticsearch1. 关于各种数据库的使用2. 关系型数据库中的索引3. 安装与启动elasticsearch4. 访问elasticsearch5. 使用elasticsearch分词6. elasticsearch文档的相关概念7. 使用elasticsearch添加数据7.1. 添加文档7.2. 查…

QT登录界面

1.效果图 2.代码 #include "widget.h" #include "ui_widget.h" #include <QApplication> #include <QWidget> #include <QtWidgets>Widget::Widget(QWidget *parent): QMainWindow(parent), ui(new Ui::Widget) {ui->setupUi(this);…

【CSS】浮动

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;HTMLCSS &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 浮动浮动的规则浮动的案例浮动的清除 浮动 float属性可以指定一个元素应沿其容器的…

deeplabv3+源码之慢慢解析 第二章datasets文件夹(1)voc.py--voc_cmap函数和download_extract函数

系列文章目录&#xff08;更新中&#xff09; 第一章deeplabv3源码之慢慢解析 根目录(1)main.py–get_argparser函数 第一章deeplabv3源码之慢慢解析 根目录(2)main.py–get_dataset函数 第一章deeplabv3源码之慢慢解析 根目录(3)main.py–validate函数 第一章deeplabv3源码之…

亚马逊云科技推出的一项完全托管的生成式AI服务——Amazon Bedrock

在全球生成式AI浪潮兴起之际&#xff0c;以“智联世界&#xff0c;生成未来”为主题的2023世界人工智能大会&#xff08;WAIC 2023&#xff09;于7月6日在上海世博中心拉开帷幕。大会首日&#xff0c;亚马逊云科技携生成式AI产品Amazon Bedrock亮相大会现场&#xff0c;亚马逊云…

Linux发行版Gentoo被发现有漏洞,在SQL注入方面存在安全风险

近日有消息表明&#xff0c;Gentoo Linux发行版中存在漏洞CVE-2023-28424&#xff0c;并且极有可能被黑客利用该漏洞进行SQL注入攻击。 据悉&#xff0c;研究人员从 GentooLinux的Soko搜索组件中找到了这个漏洞&#xff0c;并且该漏洞的CVSS风险评分为 9.1&#xff0c;属于特别…