当前位置: 首页 > article >正文

C++转python语法训练 算法模板02

【模板】堆 (nowcoder.com)

import heapq
t = int(input())
class A:
    __slots__ = 'a'
    def __init__(self, a):
        self.a = a
    def __lt__(self, rhs:'A'):
        return self.a > rhs.a
hq = []
for _ in range(t):
    str = input().split()
    if len(str) == 2:
        heapq.heappush(hq, A(int(str[1])))
    else:
        if str[0] == 'pop' and hq:
            print(heapq.heappop(hq).a)
        else:
            if hq:
                print(hq[0].a)
            else:
                print('empty')

【模板】循环队列 (nowcoder.com)

from collections import deque
dq = deque()
lgh, t = map(int, input().split())
for _ in range(t):
    s = input().split()
    if len(s) == 2:
        if len(dq) == lgh:
            print('full')
        else:
            dq.append(int(s[1]))
    if s[0] == 'pop':
        if len(dq) == 0:
            print('empty')
        else:
            print(dq.popleft())
    if s[0] == 'front':
        if len(dq) == 0:
            print('empty')
        else:
            print(dq[0])

【模板】链表 (nowcoder.com)

t = int(input())
a = []
for _ in range(t):
    s = input().split()
    if s[0] == 'insert':
        x, y = int(s[1]), int(s[2])
        if x in a:
            a.insert(a.index(x), y)
        else:
            a.append(y)
    elif s[0] == 'delete':
        x = int(s[1])
        if x in a:
            a.remove(x)
print( ' '.join(map(str, a))  if a else 'NULL' )

【模板】栈 (nowcoder.com)

from collections import deque
stk = deque()
t = int(input())
for _ in range(t):
    s = input().split()
    if s[0] == 'push':
        stk.append(s[1])
    elif s[0] == 'pop':
        if stk:
            print(stk.pop())
        else: 
            print('error')
    elif s[0] == 'top':
        if stk:
            print(stk[-1])
        else:
            print('error')

【模板】队列 (nowcoder.com)

from collections import deque
q = deque()
t = int(input())
for _ in range(t):
    s = input().split()
    if s[0] == 'push':
        q.appendleft(int(s[1]))
    elif s[0] == 'pop':
        if q:
            print(q.pop())
        else:
            print('error')
    elif s[0] == 'front':
        if q:
            print(q[-1])
        else:
            print('error')

【模板】并查集 (nowcoder.com)

n,m = map(int, input().split())
p = [ _ for _ in range(n + 1)]
sz = [1] * (n + 1)
def find(x):
    if x == p[x]:
        return x
    p[x] = find(p[x])
    return p[x]
def union(x, y):
    x = find(x)
    y = find(y)
    if x == y:
        return
    if sz[x] < sz[y]:
        x, y = y, x
    p[y] = x
    sz[x] += sz[y]
for _ in range(m):
    a,b = map(int, input().split())
    union(a,b)
for i in range(1, n + 1):
    find(i)
print(len(set(p)) - 1, max(sz))

http://www.kler.cn/a/379675.html

相关文章:

  • MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
  • 面试题:JVM(二)
  • 上市公司环境信息披露质量评分数据王婉菁版(2008-2023年)噪声光污染辐射废水减排等治理
  • Java实现动态切换ubuntu壁纸功能
  • Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
  • PlotNeuralNet学习与入门
  • Arduino平台软硬件原理及使用——热释电传感器的使用
  • gRPC-集成Springboot
  • 001-Kotlin界面开发之Jetpack Compose Desktop学习路径
  • 并发编程(6)——future、promise、async,线程池
  • 【Mars3d】targetPosition支持动态属性坐标
  • ctfshow——web(总结持续更新)
  • 《向量数据库指南》——BGE-M3:引领多模态RAG系统新风尚!
  • Docker容器消耗资源过多导致宿主机死机解决方案
  • openGauss开源数据库实战十五
  • 企业数据泄露安全演练(分享)
  • 飞牛OS在Docker中安装ODOO ERP系统
  • 书签管理工具使用技巧
  • Transformer和BERT的区别
  • Springboot 整合 Java DL4J 实现情感分析系统
  • SQL 视图:概念、应用与最佳实践
  • 教程:使用 InterBase Express 访问数据库(四)
  • C++在游戏开发中的应用与实践
  • [前端面试]计算机网络
  • C语言案例——青蛙跳台阶问题
  • js-18-防抖、节流源码以及如何使用