数据结构-队列
一:队列的基本操作
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
作者:
Shu-How Z
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。