Leetcode506. 相对名次

news2024/11/20 20:39:21

Every day a leetcode

题目来源:506. 相对名次

解法1:STL vector 自定义排序

使用 vector<pair<int, int>> 数组v记录原来 score 数组的下标和成绩。

对v按成绩进行降序排序。

新建一个 vector<string> 数组 ans,遍历v,按要求对 ans[v[i].first] 进行赋值:

  • 若i == 0,说明成绩最高,赋值 “Gold Medal”;
  • 若i == 1,说明成绩第2,赋值 “Silver Medal”;
  • 若i == 2,说明成绩第3,赋值 “Bronze Medal”;
  • 否则,赋值 to_string(i+1)。

注意:使用sort函数的时候因为自己要定义compare,但是会报错error: reference to non-static member function must be called。

解决方法:compare函数前面加个static就可。

代码:

/*
 * @lc app=leetcode.cn id=506 lang=cpp
 *
 * [506] 相对名次
 */

// @lc code=start
class Solution
{
public:
    // cmp函数前面加个static,否则报错:
    // reference to non-static member function must be called
    static bool cmp(const pair<int, int> A, const pair<int, int> B)
    {
        return A.second > B.second; // 降序排列
    }
    vector<string> findRelativeRanks(vector<int> &score)
    {
        int n = score.size();
        vector<pair<int, int>> v;
        for (int i = 0; i < n; i++)
            v.push_back(pair<int, int>(i, score[i]));
        sort(v.begin(), v.end(), cmp);
        vector<string> ans(n);
        for (int i = 0; i < n; i++)
        {
            if (i == 0)
                ans[v[i].first] = "Gold Medal";
            else if (i == 1)
                ans[v[i].first] = "Silver Medal";
            else if (i == 2)
                ans[v[i].first] = "Bronze Medal";
            else
                ans[v[i].first] = to_string(i + 1);
        }
        return ans;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O((nlogn),其中 n 为数组的长度。我们需要对数组进行一次排序,因此时间复杂度为 O(nlogn)。

空间复杂度:O(n),其中 n 为数组的长度。

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

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

相关文章

WiFi(Wireless Fidelity)基础(三)

目录 一、基本介绍&#xff08;Introduction&#xff09; 二、进化发展&#xff08;Evolution&#xff09; 三、PHY帧&#xff08;&#xff08;PHY Frame &#xff09; 四、MAC帧&#xff08;MAC Frame &#xff09; 五、协议&#xff08;Protocol&#xff09; 六、安全&#x…

FP斗篷,2023独立站必看指南

Cloak斗篷技术是一种网络隐身术&#xff0c;通过技术手段实现在网络上匿名和隐身&#xff0c;保护个人隐私和安全。斗篷技术的实现原理是通过使用虚拟专用网络&#xff08;VPN&#xff09;或代理服务器等技术&#xff0c;将用户的真实IP地址隐藏起来&#xff0c;使其在网络上的…

CentOS7离线升级SSH至9.1P1

1、离线安装telnet&#xff08;用telnet登录升级ssh&#xff0c;因为ssh升级时&#xff0c;ssh会话会断开&#xff09; &#xff08;1&#xff09;下载telnet、telnet-server、xinetd&#xff0c;并传到服务器上 http://rpmfind.net/linux/centos/7.9.2009/updates/x86_64/Pack…

目前电视盒子哪个最好?测评20款后整理网络电视盒子推荐

电视盒子是日常必备的数码单品&#xff0c;功能越来越丰富&#xff0c;但很多人不懂要如何选择电视盒子&#xff0c;芯片、内存外还应该考虑系统、技术优化和界面设计等因素。昨天刚刚结束了二十款电视盒子的测评&#xff0c;马上来介绍下我的测评结果&#xff0c;整理了网络电…

flutter mqtt的使用看这里,持续更新

mqtt网络协议&#xff0c;相信跟物联网相关的公司都会遇到&#xff0c;在Android,iOS原生开发是可以很好的实现&#xff0c;相关的资料也是很多&#xff01;但是在flutter里面还算比较尝鲜的一个领域吧&#xff01; 幸亏flutter里面 已经有一个还不错的第三库mqtt_client&…

Springcloud 之Gateway组件详解

目录 1.网关 1.1 网关简介 1.2 网关组件 1.2.1 Gateway介绍 1.2.2 Gateway实践 1.2.3 Gateway执行流程 1.2.4 断言工厂 1.2.5 过滤器 1.网关 1.1 网关简介 大家都都知道在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多…

Vmware ESXi 5.0 安装与部署

在虚拟化领域VMware、Citrix、Microsoft都有不错的解决方案而在服务器虚拟化领域VMware又占据着领导者地位游侠www.2cto.com今天也装了个平台与大家一起分享。   VMware的虚拟化产品就个人、小企业而言有Workstation、ESXivSphere免费版、VMwareServer免费版可以选择由于Work…

彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!

利用R语言脚本实现批量合并Excel表格 在整理数据的时候遇到一个问题&#xff1a;假如有很多个excel表&#xff0c;分别存放了一部分数据&#xff0c;现在想要快速把这些表格的数据汇总到一起&#xff0c;如何用R语言快速完成呢&#xff1f;本文分享一个脚本&#xff0c;能够自动…

分享2个教学视频录制的方法!

案例&#xff1a;如何录制教学视频&#xff1f; 【我是一名老师&#xff0c;我想录制一些教学视频发布在网络平台上&#xff0c;但是我不知道如何操作。有没有人知道录制教学视频需要什么工具&#xff1f;如何录制&#xff1f;】 随着在线教育的普及&#xff0c;越来越多的教…

【K8s】K8s介绍与集群环境搭建

文章目录 一、Kubernetes介绍1、背景2、kubernetes简介3、组件说明4、示例&#xff1a;部署nginx说明各组件的协作5、kubernetes核心概念 二、kubernetes集群环境搭建1、部署方式2、安装要求和最终目标3、环境准备4、环境初始化5、集群测试 一、Kubernetes介绍 1、背景 在部署…

转向路线优化之算法二

0.概述 广义上的主曲线定义为穿过数据中心的自洽曲线,本文基于数据点的概率密度估计结果,得到相应的梯度Gradient和Hessian矩阵,以此求得原始数据点的主曲线拟合结果. 1.基于Gradient与Hessian的主曲线定义 一般认为可构造主曲面(含主曲线)的数据点具有某种固有的潜在概…

Java多线程入门到精通学习大全?了解线程的几种创建方式和基本原理、代码示例!(第四篇:线程的创建学习)

Java多线程的创建方式有三种&#xff1a;继承Thread类&#xff0c;实现Runnable接口和使用Callable和Future接口。 一、继承Thread类 1 原理&#xff1a; 继承Thread类&#xff0c;重写run()方法&#xff0c;将需要并发执行的代码写在run()方法中&#xff0c;创建Thread类的…

【python学习】基础篇-文件与系统-打开与读取文件、文件操作的常用方法

打开与读取文件 在 Python 中&#xff0c;内置了文件(file) 对象。 在使用文件对象时&#xff0c;首先需要通过内置的 open0 方法创建一个文件对象&#xff0c;然后通过该对象提供的方法进行基本的文件操作。 open() 函数的语法格式如下: file open(filename[,mode[,bufferin…

推荐系统学习之路

基本概念&#xff1a; 一、基本流程 b站王树森老师课程笔记 召回(retrieval&#xff09;&#xff1a;快速从海量数据中取回几千个用户可能感兴趣的物品。 方法&#xff1a; 协同过滤 相似度计算&#xff1a; 余弦&#xff0c; 杰卡德 矩阵分解&#xff1a; 将一个稀疏的用户评…

2022年宜昌市网络搭建与应用竞赛样题(三)

网络搭建与应用竞赛样题&#xff08;三&#xff09; 技能要求 &#xff08;总分1000分&#xff09; 竞赛说明 一、竞赛内容分布 “网络搭建与应用”竞赛共分三个部分&#xff0c;其中&#xff1a; 第一部分&#xff1a;网络搭建及安全部署项目&#xff08;500分&#xff0…

Docker笔记(二)

一、Docker 复杂安装1.1、mysql 主从复制1.2、Redis1.2.1、Redis存储大量数据解决方案1.2.2、Redis 集群搭建1.2.3、数据读写存储1.2.4、容错切换转移1.2.5、主从扩容案例1.2.6、主从缩容案例 二、Dockerfile2.1、是什么&#xff1f;2.2、保留字指令2.3、案例 三、虚悬镜像3.1、…

Jetson Orin 平台MAX9296+森云SG5-IMX490C-GMSL2 RGGB(无ISP)驱动调试

1.前期调试说明 开发套件: AGX Orin 32GB模块 版本: JetPack 5.0.2 使用1台SG5-IMX490C-GMSL2-Hxxx IMX490 RGGB x4相机(无ISP), 通过max9296 GMSL2 LINKA接入到Orin CSI端口4 v4l2-ctl -d /dev/video0 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=5 [ 1282…

Django框架之视图概述和URL配置

概述 视图方法&#xff0c;简称视图&#xff0c;它可以接收一个Web request对象并向客户端返回一个Web response对象。response可以是任何对象&#xff0c;如HTML文档、重定向、404异常、XML文档甚至一张图片。在视图方法中可以进行任意的业务逻辑处理&#xff0c;例如查询数据…

运算符重载(全局函数与类的成员函数分别解析)

运算符重载&#xff08;全局函数&#xff09; 比如说对于小于号和大于号&#xff0c;如果说是内置类型的话&#xff0c;可以直接进行比较&#xff0c;因为内置类型是祖师爷定义的&#xff0c;那祖师爷肯定知道比方说int类型怎么比&#xff0c;double类型怎么比&#xff0c;因为…

STL之search()算法

我们之前介绍的find()算法以及find_if()算法都帮助我们查找判断某一个value是否被包含在序列中&#xff0c;并返回它第一次出现时所处的位置&#xff0c;假如我想找到某一段满足条件的子区间&#xff0c;应该怎么做呢&#xff1f;C标准库又为我们提供了哪些算法呢&#xff1f; …