首页 > 其他分享 >LeetCode刷题-队列

LeetCode刷题-队列

时间:2024-09-05 20:25:50浏览次数:11  
标签:duilie 队列 ping char print LeetCode def 刷题

一:队列的基本操作

1、先进先出;入队和出队、类似与排队

2、单端队列

3、队列的常见操作

#在python 中使用deque创建队列
import collections import deque
duilie=deque()#创建队列
def add(nums):
    duilie.append()#给队列添加元素
def peek():
    return duilie[0]#查看队首元素
def remove():
    if duilie:
        duilie.popleft()#删除队首元素
    else:
        return len(duilie)
def size():
    return len(duilie)#计算队列的长度
def print_duilie():
    for i in range:#遍历输出队列元素
        print(i)
    else:
        print("出现错误")
        return ""
#给队列添加元素
add(1)
add(3)
add(4)
#调用函数进行操作
#print(print_queue(),end="")
#print(peek())
#print(remove())
print(size())

二:队列刷题

933题目 最近的请求次数

  • RecentCounter() 初始化计数器,请求数为 0 。
  • int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。

保证 每次对 ping 的调用都使用比之前更大的 t 值。

示例 1:

输入:
["RecentCounter", "ping", "ping", "ping", "ping"]
[[], [1], [100], [3001], [3002]]
输出:
from collections import deque
def ping(requests, t):
    requests.append(t)
    while requests[0]<t-3000:
        requests.popleft()
    return len(requests)
#创建队列
requests=deque()
print(ping(requests, 1),end=' ')

题目:387 字符串中第一个唯一一个的字符

思路:哈希表的经典例题:定义一个字典;存储元素出现的次数;如果他在这份列表当中;那么这个元素的次数加一;如果不在那么就将该元素的次数赋值为1;然后使用遍历根据字典中统计的次数返回第一个出现一次的元素的索引!

def firstUniqChar(s):
    # 统计字符频率
    char_count = {}
    for char in s:
        if char in char_count:
            char_count[char] += 1
        else:
            char_count[char] = 1

    # 查找第一个唯一字符
    for i, char in enumerate(s):
        if char_count[char] == 1:
            return i

    # 如果没有找到唯一字符,返回 -1
    return -1


# 示例测试
print(firstUniqChar("leetcode"))  # 输出: 0
print(firstUniqChar("loveleetcode"))  # 输出: 2
print(firstUniqChar("aabb"))  # 输出: -1

标签:duilie,队列,ping,char,print,LeetCode,def,刷题
From: https://www.cnblogs.com/gsupl/p/18399189

相关文章

  • 单调队列
    单调队列经典用法:维持滑动窗口滑动过程中的最大值或最小值。最大值时,单调队列从头到尾降序维持求解答案的可能性单调队列里所有对象按照规定好的单调性组织当某个对象从队尾进入单调队列时,会从队头或者队尾依次淘汰单调队列里,对后续求解答案没有帮助的对象每个对象一旦弹出......
  • LeetCode:盛最多水的容器(11)
    目录题目代码思路1、暴力求解2、双指针代码实现题目11.盛最多水的容器-力扣(LeetCode)给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i,0) 和 (i,height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容......
  • LeetCode 3174. 清除数字(字符串、模拟)
    题目:3174.清除数字思路:用字符串t模拟操作要求,当x是数字时,删除t的最后一个字符。不是的话,直接插入xclassSolution{public:stringclearDigits(strings){stringt="";for(autox:s){if('0'<=x&&x<='9'){......
  • 9.5LeetCode
    80.删除有序数组重复项II给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。 思路:和删除有序数组的重复项1很......
  • C++ STL queue容器——队列
    queue容器基本概念queue是一种**先进先出的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。queue容器没有迭代器,所有元素进出都必须符合“先进先出”条件,只有顶端的元素才有机会被外界取用,所以也不提供遍历功能。queue容器常用操作构造函数queue<T>qu......
  • 一个故事理解消息队列-下
    这是一篇迟到一月有余的文章。在7月18号,我用了一个故事作为案例,介绍了消息队列的基本功能和应用场景。本打算第二天介绍消息队列的主要功能特性的,由于文章排期等其他因素影响,故更新搁置了。这篇文章,接上篇《一个故事理解消息队列-上》,以Kafka为例,为大家介绍消息队列的主要功能......
  • 代码随想录算法训练营|Day07 LeetCode 344.反转字符串 ,541.反转字符串||,卡玛网54.替换
    344.反转字符串344.反转字符串-力扣(LeetCode)classSolution{public:voidreverseString(vector<char>&s){intlens=s.size();intright,left;if(lens%2!=0)//奇数个{right=lens/2+1;left=l......
  • 洛谷刷题之P1046
    [NOIP2005普及组]陶陶摘苹果题目描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出101010个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个......
  • 洛谷刷题之P1009
    [NOIP1998普及组]阶乘之和题目描述用高精度计算出S=1!+2......
  • 洛谷刷题之P1226
    【模板】快速幂题目描述给你三个整数a,b,pa,b,p......