力扣刷题记录——496. 下一个更大元素 I、500. 键盘行、506. 相对名次

news2024/11/18 7:23:35

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《496. 下一个更大元素 I、500. 键盘行、506. 相对名次》。

目录

496. 下一个更大元素 I

        题目描述

        解题思路

        解题代码

500. 键盘行

        题目描述

        解题思路

        解题代码

506. 相对名次

        题目描述

        解题思路

        解题代码


496. 下一个更大元素 I

题目描述

 

nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1 。

返回一个长度为 nums1.length 的数组 ans 作为答案,满足 ans[i] 是如上所述的 下一个更大元素 。

示例 1:

输入:nums1 = [4,1,2], nums2 = [1,3,4,2].
输出:[-1,3,-1]
解释:nums1 中每个值的下一个更大元素如下所述:
- 4 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。
- 1 ,用加粗斜体标识,nums2 = [1,3,4,2]。下一个更大元素是 3 。
- 2 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1 。

示例 2:

输入:nums1 = [2,4], nums2 = [1,2,3,4].
输出:[3,-1]
解释:nums1 中每个值的下一个更大元素如下所述:
- 2 ,用加粗斜体标识,nums2 = [1,2,3,4]。下一个更大元素是 3 。
- 4 ,用加粗斜体标识,nums2 = [1,2,3,4]。不存在下一个更大元素,所以答案是 -1 。

解题思路

遍历整个num1,取出num1中每一个元素i,以i的索引将nums2分割,在分割完的列表中找出第一个比i大的元素,如果没有找到那么返回-1。

解题代码

def nextGreaterElement(nums1,nums2):
    fin_list = []
    for i in nums1:
        for j in nums2[nums2.index(i)::]:
            if j > i :
                fin_list.append(j)
                break
            elif nums2.index(j) == len(nums2)-1:
                fin_list.append(-1)
    return fin_list

500. 键盘行

题目描述

给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。

美式键盘 中:

  • 第一行由字符 "qwertyuiop" 组成。
  • 第二行由字符 "asdfghjkl" 组成。
  • 第三行由字符 "zxcvbnm" 组成。

示例 1:

输入:words = ["Hello","Alaska","Dad","Peace"]
输出:["Alaska","Dad"]

示例 2:

输入:words = ["omk"]
输出:[]

示例 3:

输入:words = ["adsdf","sfd"]
输出:["adsdf","sfd"]

 

解题思路

首先遍历整个words,根据word的第一个字母判断是哪一行构成的,然后遍历word,如果有一个不在目标行的话,那么直接退出,如果到最后一个了,说明全部在目标杭,那么把它添加到目标列表中,最终返回这个目标列表。

解题代码

def findWords(words):
    str_1 = "qwertyuiopQWERTYUIOP"
    str_2 = "asdfghjklASDFGHJKL"
    str_3 = "zxcvbnmZXCVBNM"
    fin_target = []
    for word in words:
        first = word[0]
        if first in str_1:
            target_str = str_1
        elif first in str_2:
            target_str = str_2
        else:
            target_str = str_3
        for i in range(0,len(word)):
            if word[i] not in target_str:
                break
            # 已经到最后一个了
            if i == len(word)-1:
                fin_target.append(word)
    return fin_target

506. 相对名次

题目描述

给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。

运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:

  • 名次第 1 的运动员获金牌 "Gold Medal" 。
  • 名次第 2 的运动员获银牌 "Silver Medal" 。
  • 名次第 3 的运动员获铜牌 "Bronze Medal" 。
  • 从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 "x")。

使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。

示例 1:

输入:score = [5,4,3,2,1]
输出:["Gold Medal","Silver Medal","Bronze Medal","4","5"]
解释:名次为 [1st, 2nd, 3rd, 4th, 5th] 。

示例 2:

输入:score = [10,3,8,9,4]
输出:["Gold Medal","5","Bronze Medal","Silver Medal","4"]
解释:名次为 [1st, 5th, 3rd, 2nd, 4th] 。

解题思路

首先想到的是字典,字典的查询速度非常快,用列表排序的方式将键和值关联起来,再利用切片对列表拷贝一份,用拷贝之后的列表遍历,查询字典中的值,将查询到的值添加到目标列表中,最后将目标列表返回。

解题代码

def findRelativeRanks(score):
    score_copy = score[::]
    fin_score = []
    fin_dic = {}
    result = []
    score.sort(reverse=-1)
    for i in range(1,len(score)+1):
        if i == 1:
            fin_score.append("Gold Medal")
        elif i == 2:
            fin_score.append("Silver Medal")
        elif i == 3:
            fin_score.append("Bronze Medal")
        else:
            fin_score.append(str(i))
    for i in range(0,len(score)):
        fin_dic[score[i]] = fin_score[i]
    for i in score_copy:
        result.append(fin_dic[i])
    return result

 

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

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

相关文章

Acwing4700. 何以包邮?(DP,01背包)

新学期伊始&#xff0c;适逢顿顿书城有购书满 x 元包邮的活动&#xff0c;小 P 同学欣然前往准备买些参考书。 一番浏览后&#xff0c;小 P 初步筛选出 n 本书加入购物车中&#xff0c;其中第 i 本&#xff08;1≤i≤n&#xff09;的价格为 ai 元。 考虑到预算有限&#xff0…

【大厂高频真题100题】《删除无效的括号》 真题练习第24题 持续更新~

删除无效的括号 给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。 返回所有可能的结果。答案可以按 任意顺序 返回。 示例 1: 输入:s = "()())()" 输出:["(())()","()()()"] 示例 2: 输入:…

1.初识React

React是用于构建用户界面的JavaScript库&#xff0c;可以应用于web&#xff0c;app(react-native),VR(react 360) 目录 1 安装React 2 简单使用 2.1 在页面上创建一个元素 2.2 React.createElement() 2.3 ReactDom.render() 3 React脚手架 3.1 初始化项目 3.2 …

国际人才考试中级的一点备考经验

在学英语的过程中&#xff0c;考证算是一件检验自己学习成果不错的方法&#xff0c;一开始是考虑了考雅思的&#xff0c;但综合自己幼儿园水平的听力&#xff0c;打算先放一放&#xff0c;考一考国才试试水。 国才考试近几年才有&#xff0c;知名度稍差&#xff0c;不过它不限制…

【Nginx】Nginx原理及优化参数配置

1. master和worker2. worker如何进行工作3. 一个master和多个woker有好处4. 设置多少个worker合适5. 连接数worker_connection 1. master和worker 2. worker如何进行工作 3. 一个master和多个woker有好处 首先&#xff0c;对于每个 worker 进程来说&#xff0c;独立的进程&am…

读书:《有无之境:王阳明哲学的精神》

《有无之境&#xff1a;王阳明哲学的精神》 王阳明晚年的时候&#xff0c;把他的哲学概括成了四句话&#xff0c;即四句教&#xff1a; 无善无恶心之体&#xff1b; 有善有恶意之动&#xff1b; 知善知恶是良知&#xff1b; 为善去恶是格物。 第一句&#xff1a;无善无恶心…

Trino源码分析:sql字段解析

业务中需要对Trino查询语句中涉及的字段进行处理&#xff0c;所以对这一段源码进行追踪分析&#xff0c;记录如下。 源码追踪是从QueuedStatementResource类开始的。 QueuedStatementResource类与ExecutingStatementResource类&#xff0c;提供用户执行查询相关的Restful接口。…

【C进阶】自定义类型——结构体、枚举和联合体

家人们欢迎来到小姜的世界&#xff0c;<<点此>>传送门 这里有详细的关于C/C/Linux等的解析课程&#xff0c;家人们赶紧冲鸭&#xff01;&#xff01;&#xff01; 客官&#xff0c;码字不易&#xff0c;来个三连支持一下吧&#xff01;&#xff01;&#xff01;关注…

MySQL高级【事务原理】

1&#xff1a;事务原理1.1&#xff1a;事务基础1). 事务 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 2). 特性 • …

Leetcode 算法刷题Day22-----------------------二叉树

Leetcode 算法刷题Day22-----------------------二叉树 1. 235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/文章讲解&#xff1a;https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6…

Burp Suite Professional v2022.12.6 Crack

Burp Suite 被描述为通过 Port Swigger 提供给用户和开发人员的网络安全工具组合的重要过程。它有能力为开发人员提供服务&#xff0c;也有能力为具有竞争优势的用户提供卓越的研究。Burp Suite 基本上是一个集成平台&#xff0c;呈现给用户和开发人员&#xff0c;用于执行 Web…

[Zombodb那些事]Zombodb执行引擎

Zombodb执行引擎0.前言我们在使用Zombodb时&#xff0c;会使用一些SQL查询&#xff0c;例如&#xff1a;CREATE EXTENSION zombodb; DROP EXTENSION zombodb; CREATE INDEX idxtest_analyze_text ON test_analyze_text USING zombodb ((test_analyze_text.*)); DROP TABLE idxt…

机器学习实战:一文详解K近邻算法,包括原理解析+实战案例

各位同学好&#xff0c;今天我向大家介绍一下python机器学习中的K近邻算法。内容有&#xff1a; K近邻算法的原理解析&#xff1b;实战案例–红酒分类预测。 案例简介&#xff1a;有178个红酒样本&#xff0c;每一款红酒含有13项特征参数&#xff0c;如镁、脯氨酸含量&#x…

从 PageHelper 到 MyBatis Plugin

在很多业务场景下我们需要去拦截 SQL&#xff0c;达到不入侵原有代码业务处理一些东西&#xff0c;比如&#xff1a;历史记录、分页操作、数据权限过滤操作、SQL 执行时间性能监控等等&#xff0c;这里我们就可以用到 MyBatis 的插件 Plugin。下面我们来了解一下 Plugin 到底是…

代码随想录算法训练营第11天 20.有效的括号、150.逆波兰表达式求值、1047. 删除字符串中的所有相邻重复项

代码随想录算法训练营第11天 20.有效的括号、150.逆波兰表达式求值、1047. 删除字符串中的所有相邻重复项 有效的括号 力扣题目链接(opens new window) 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符…

JVM基础详解

1.JVM内存结构 1.1 内存结构划分 以上代码执行过程&#xff1a; 执行 javac 命令编译源代码为字节码 执行 java 命令 创建 JVM&#xff0c;调用类加载子系统加载 class&#xff0c;将类的信息存入方法区创建 main 线程&#xff0c;使用的内存区域是 JVM 虚拟机栈&#xff0c;开…

[JAVA安全]weblogic反序列化介绍及环境搭建

weblogic反序列化介绍 weblogic是一个常用的web中间件&#xff0c;它的反序列化漏洞也算是比较经典&#xff0c;而在weblogic里面其实反序列化漏洞大致分为两种&#xff0c;一个是基于T3协议的反序列化漏洞&#xff0c;一个是基于XML的反序列化漏洞&#xff0c;以后再说吧&…

用R语言画切线和法线

文章目录7 法线梯度、切线和法线切线和法线的绘制7 法线 梯度、切线和法线 为了书写方便&#xff0c;记xix1,x2,...,xnx_ix_1,x_2,...,x_nxi​x1​,x2​,...,xn​&#xff0c;∂f∂xi∂f∂x1,∂f∂x2,⋯∂f∂xn\frac{\partial f}{\partial x_i}\frac{\partial f}{\partial x_…

springboot+rabbitmq搭建mqtt协议实现订阅发布(亲测9w消息并发)

一、mqtt协议简单介绍 mqtt是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的轻量级通讯协议&#xff0c;通过订阅相应的主题来获取消息&#xff0c;是物联网&#xff08;Internet of Thing&#xff09;中的一个标准传输协议。 二、rabbitmq的安装部署 1. …

c# 随机数,c# 生成随机数,c# 生成区间随机数,c# 生成随机数组

c# 随机数&#xff0c;c# 生成随机数&#xff0c;c# 生成区间随机数&#xff0c;c# 生成随机数组 小试牛刀 先看结果 生成200-700之间的5个随机数 第1的随机数是&#xff1a;647 第2的随机数是&#xff1a;219 第3的随机数是&#xff1a;311 第4的随机数是&#xff1a;210 第5…