Leetcode刷题日志3.0

news2024/12/23 23:27:27

目录

前言:

1.相对名次​​​​​​

2.学生出勤记录 I 

 3.重塑矩阵

4.分糖果 

5.最长和谐子序列

6.种花问题 


前言:

        今天我就分享一下最近在leetcode刷到的题,希望对大家有所帮助。编程语言:Python3。好了废话不多讲了,请看题:
 

1.相对名次​​​​​​

给你一个长度为 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 位运动员的获奖情况。

class Solution:
    def findRelativeRanks(self, score):
        li=["Gold Medal","Silver Medal","Bronze Medal"]
        for i in range(3,len(score)):
            li.append(str(i+1))
        l=[]
        ss=[]
        for i in score:
            ss.append(i)
        i=0
        di={}
        for i in range(len(score)):
            di[max(score)]=li[i]
            score.remove(max(score))
        for j in ss:
            l.append(di[j])
        return l

 方法思路:先创建一个储存名次的列表来li,然后向里面依次存入当前已有人数的名次(前三名跟后面的分开处理),然后我们创建一个字典,对当前score分数进行循环,把最大分数值作为字典的键,然后以li中的名次作为值(每次循环一次后,li的值往后移动一位),然后就把当前score中的最大值给移除掉就行了。最后用列表l 来储存字典中的名次,依次输出就行了

2.学生出勤记录 I 

给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:

'A':Absent,缺勤
'L':Late,迟到
'P':Present,到场
如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:

按 总出勤 计,学生缺勤('A')严格 少于两天。
学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。
如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。

class Solution:
    def checkRecord(self, s):
        return s.count('A')<2 and 'LLL' not in s

 思路方法:可能刚刚开始会有人想复杂了,其实这道题非常简单,一行就可以搞定了,我就不讲了,看代码就懂了。

 3.重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。

给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。

重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。

如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

class Solution:
    def matrixReshape(self, mat, r, c) :
        li=[]
        for i in mat:
            li.extend(i)
        n=len(li)
        if c*r>n or c*r<n:
            return mat
        
        newmat=[]
        for _ in range(r):
            a=[]
            for _ in range(c):
                a.append(li.pop(0))
            newmat.append(a)
        return newmat

思路方法:先把这个矩阵里面的数字依次存入到列表li 里,下面就是通过对range(r) 和range(c) 的嵌套循环取出li 里面的数据了(这里是直接去利用队列的出队方法取出数据)

4.分糖果 

Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。

医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。

给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的 最多 种类数。

class Solution:
    def distributeCandies(self, candyType) :
        a=set(candyType)
        ty=len(a)
        n=int(len(candyType)/2)
        if n>=ty:
            return ty
        return n

思路方法:首先通过集合的方法去重,获取到糖果的种类,然后对当前糖果的数量整除于2,得出的结果就是可以吃到的糖果,然后跟糖果种类数目进行比较,如果大于种类数目就说明可以吃到全部种类数目,反之就返回当前可以吃到的数量(即可以吃到的最多种类数目)

5.最长和谐子序列

和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。

现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。

数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。

class Solution(object):
    def findLHS(self, nums):
        di={}
        li=[]
        for i in nums:
            di[i]=di.get(i,0)+1
        for i in di:
            if i+1 in di:
                li.append(di[i]+di[i+1])
        if li==[]:
            return 0
        return max(li)

 思路方法:先是创建一个字典,作为元素数量的统计,然后对序列进行循环统计里面元素的个数存入到字典当中。再然后就是对字典进行循环,获取到字典相差为1的元素个数之和,然后存入到列表li当中,最后列表li里面的数字就是相差为1的元素数目之和,我们只需要返回最大值就行了。

6.种花问题 

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false 。

class Solution:
    def canPlaceFlowers(self, flowerbed, n):

        count=0
        flowerbed.append(0)
        flowerbed.insert(0,0)
        for i in range(1,len(flowerbed)-1):
            if flowerbed[i]==flowerbed[i-1]==flowerbed[i+1]==0:
                flowerbed[i]=1
                count+=1
        return count>=n

 思路方法:这道题做起来会比较无从下手,因为可能要考虑到这个数组最左边和最右边是否为1的问题,所以我们可以这样子,索性就在这个数组两边加上0,这样子我们就会发现这时候不需要去考虑两边的问题了,只要满足三个连续的0就可以实现种花。

 好了,以上就是今天要分享的题目了,你们学会了吗?

分享一张壁纸:

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

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

相关文章

消息队列使用场景介绍

消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题 实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构 使用较多的消息队列有ActiveMQ&#xff0c;RabbitMQ&#xff0c;ZeroMQ&#xff0c;Ka…

【华中农业大学2023年十二届程序设计竞赛(同步赛)】B. 写信

文章目录 题目描述思路代码 题目描述 思路 错位排序&#xff0c;可搜索引擎。复杂度太高 递推式&#xff1a; f [ n ] ( n − 1 ) ∗ ( f [ n − 1 ] f [ n − 2 ] ) f[n](n-1)*(f[n-1]f[n-2]) f[n](n−1)∗(f[n−1]f[n−2]) 正解&#xff1a;打表&#xff01;YYDS 1e9的数…

12.Hadoop练习题

1.网络问题 &#xff08;1&#xff09;机器联网出现问题 情况&#xff1a;ping一下百度&#xff0c;发现百度ping不通 sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33检查GATEWAY是否正确&#xff0c;修改过来之后保存退出&#xff0c;重启虚拟机 sudo systemctl re…

图论 (Java) 从入门到入土 /第一部分 图的基础-图的定义/

零.前言 图&#xff0c;是一种比较复杂的数据结构。和树的一个节点只和上层一个节点相连不同&#xff0c;在图中&#xff0c;任意两个节点都可能相连&#xff0c;且可能具有方向性&#xff0c;并且节点的边具有权重&#xff0c;因此&#xff0c;图被用于描述各种复杂的数据对象…

python:tkinter 生成 buttonBar 示例

tk_test1.py # -*- coding: utf-8 -*- import os import tkinter as tk from tkinter import filedialogroot tk.Tk() root.title("生成 buttonBar 示例 ") var tk.StringVar() # 动态字符串 label tk.Label(root, textvariablevar) listbox tk.Listbox(root, s…

题集-快慢指针的应用(链表)

1.中心结点 代码&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* middleNode(struct ListNode* head) {if(head->nextNULL) return head;struct ListNode* fast head,*slow …

初阶数据结构——顺序表和链表(单链表)

目录 1.线性表2.顺序表SeqList.hSeqList.cTest.c数组习题移除元素删除有序数组中的重复项合并两个有序数组 顺序表的问题及思考 3.链表SList.hSList.cTest.c 1.线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中…

BI技巧丨计算组折线图

PowerBI中&#xff0c;通常我们会使用折线图来展示数据的趋势情况。但是当数据类别过多的时候&#xff0c;需求也在进一步深入&#xff0c;往往还需要我们将用户关注的重要节点标注出来&#xff0c;例如&#xff1a;最大值和最小值。 很早之前&#xff0c;白茶曾经写过一篇关于…

HTML学习笔记一

目录 HTML学习笔记 一、HTML标签 1、HTML语法规范 1.1标签的语法概述 1.2标签关系 2、HTML基本结构标签 2.1第一个HTML 2.2基本结构标签总结 3、开发工具 4、HTML常用标签 4.1标签的语义 4.2标题标签 4.3段落和换行标签 4.4文本格式化标签 4.5div和span标签 4.…

Linux云服务器的使用,以及运行Python程序、相关Linux指令

目录 1、使用Linux云服务器的软件 2、Linux系统运行Python程序 3、Linux系统查看包、虚拟环境、安装包等 以下几个深度学习服务器都不错&#xff1a;智星云、AutoDL、恒源云 1、使用Linux云服务器的软件 MobaXterm_Personal 推荐MobaXterm_Personal mobaxterm是一款方便网站…

基于Flask的留言板的设计与实现

这是《Flask Web开发实战:入门、进阶与原理解析》这本书中的一个小项目&#xff0c;我在学习后根据书中的教程实现了留言板的功能&#xff0c;并结合我的思路将代码做了一些调整。 下面这是实现后的展示图片 文章目录 设计思路项目代码exts.pymodels.pyforms.pyerrors.pycomma…

DMDTS:DM迁移到SQL脚本

DMDTS:DM迁移到SQL脚本 环境介绍1 注册工程2 新建迁移3 迁移工具介绍4 选择迁移方式5 配置数据源6 配置SQL脚本文件7 配置源端获取对象方式和迁移策略8 选择指定对象复制9 选择迁移对象9.1 迁移对象的配置 - - 转换 设置表的映射关系 10 审阅迁移任务11 完成迁移 环境介绍 DM管…

一文了解使用Moonbeam原生跨链的潜力项目

跨链互连合约是Moonbeam独特的原生跨链解决方案&#xff0c;不仅帮助开发团队在Moonbeam网络即可解锁不同公链的特色功能&#xff0c;而且各类去中心化应用的终端使用者能因此获得更便捷安全的跨链体验。 Moonbeam的原生跨链解决方案包含Polkadot生态、不同异构链和Moonbeam生…

hitcontraining_uaf

1&#xff0c;三连 基本信息&#xff1a;x86-32-el,堆题思路&#xff1b; 保护&#xff1a;Partial RELRO。 堆题多看一个Libc&#xff1a; 2,IDA分析 main功能&#xff1a; add_note()功能&#xff1a; malloc了两次&#xff1a; 8字节填充&#xff08;利用点之一&#xf…

Markdown快速入门教程

Markdown 的目标是实现「易读易写」&#xff0c;并强调它的「可读性」&#xff0c;因此Markdown 的语法全由标点符号所组成&#xff0c;并经过严谨慎选&#xff0c;是为了让它们看起来就像所要表达的意思&#xff1b;以下是Markdown 大部分的语法。 常用语法- 文字样式 文字字…

Allegro过孔盖油和过孔开窗设置(部分过孔开窗)

Allegro设置一部分过孔盖油&#xff0c;另一部分过孔开窗。 过孔开窗&#xff1a;过孔部分去除阻焊&#xff0c;便于调试和散热&#xff1b; 过孔盖油&#xff1a;过孔盖上阻焊油墨&#xff0c;防止过孔连锡短路。 总结 使用pad designer设计两种via pad&#xff0c;一种不开…

分布式事务的几种解决方案

一.基础概念 1. 什么是事务 事务可以看做是一次大的活动&#xff0c;它由不同的小活动组成&#xff0c;这些活动 要么全部成功&#xff0c; 要么全部失败 2.本地事务 在计算机系统中&#xff0c;更多的是通过 关系型数据库来控制事务&#xff0c;这是利用数据库 本身的事务特性…

基于Qt的教务管理系统的设计与实现

获取代码&#xff1a; (1) 下载链接: https://download.csdn.net/download/kese7952/87741551 (2) 添加博主微信获取,备注来源: mryang511688 项目描述 技术&#xff1a;C、QT等 摘要&#xff1a; 随着学校规模的不断扩大&#xff0c;学生的流动变迁导致了学校在管理学生信息…

二叉堆(Binary Heap)

二叉堆&#xff08;Binary Heap&#xff09; 二叉堆概述优先级队列 二叉堆&#xff08;Binary Heap&#xff09;其实比较简单&#xff0c;但却非常有用&#xff0c;常见的应用二叉堆排序和优先级队列。本文将介绍二叉堆的基本性质、基本操作和二叉堆在优先级队列上的应用。 二…

abc 283E 经典dp

题意&#xff1a;https://www.luogu.com.cn/problem/AT_abc283_e 思路&#xff1a;非常经典的dp&#xff0c;设为前i行第i行是否反转和第i1行是否反转。 /*keep on going and never give up*/ #include<cstdio> #include<iostream> #include<queue> #inclu…