2021秋招-数据结构-栈、队列、数组、列表

栈、队列、数组、列表

实现方式

队列
class Queue:def __init__(self):self.items = []def enqueue(self, item):self.items.append(item)def dequeue(self):return self.items.pop(0)def empty(self):return self.size() == 0def size(self):return len(self.items)
应用: 约瑟夫斯问题
著名的 约瑟夫斯问题(Josephus Problem)是应用队列(确切地说,是循环队列)的典型案例。
在 约瑟夫斯问题 中,参与者围成一个圆圈,从某个人(队首)开始报数,报数到n+1的人退出圆圈,
然后从退出人的下一位重新开始报数;重复以上动作,直到只剩下一个人为止。值得注意的是,Queue类只实现了简单队列,上述问题实际上需要用循环队列来解决。
在报数过程中,通过“将(从队首)出队的人再入队(到队尾)”来模拟循环队列的行为。具体代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-def josephus(namelist, num):simqueue = Queue()for name in namelist:simqueue.enqueue(name)while simqueue.size() > 1:for i in xrange(num):simqueue.enqueue(simqueue.dequeue())simqueue.dequeue()return simqueue.dequeue()if __name__ == '__main__':print(josephus(["Bill", "David", "Kent", "Jane", "Susan", "Brad"], 3))
20. 有效的括号-栈-简单

在这里插入图片描述

  • python自己-实现
class Solution:def isValid(self, s: str) -> bool:# 栈: 遇到 '(', '[', '{'# 词典: {'{}', '()', '[]'}stack = []dict1 = {'}':'{', ']':'[', ')':'('}for i in range(len(s)):if s[i] not in dict1:stack.append(s[i])else:if not stack or stack.pop() != dict1[s[i]]:return Falsereturn False if stack else True
32. 最长有效括号-困难

在这里插入图片描述

⭐最长有效括号powcai
⭐手画图解-栈、动态规划 的思路
解题思路一:常规-栈

对于这种括号匹配问题,一般都是使用栈;
先找到所有可以匹配的索引号,然后找出最长连续数列;
例如: s = )(()()), 可以使用栈找到:
位置2 和 位置3 匹配;
位置4 和 位置5 匹配;
位置1 和 位置6 匹配;

这个数组玮 2,3,4,5,1,6 ,这是通过栈找到的,按照递增序列排序,找出该数组的最长连续数列的长度就是最长有小括号长度:
所以复杂度来自于: O ( n l o g n ) O(nlogn) O(nlogn).
接下来思考: 怎么省略排序的过程,在弹栈的时候进行操作呢。

  • python实现: 时间复杂度: O ( n ) O(n) O(n)
class Solution:def longestValidParentheses(self, s: str) -> int:if not s:return 0stack = [-1]res = 0for i in range(len(s)):if s[i] == '(':stack.append(i)else:# 这里思路最精彩:# l利用下标存储当前结果; # 通过栈将问题转化为 最大间隔的问题; # 预先设置为 -1, 如果出现先 ) 将 )作为参照物;  stack.pop()if not stack:stack.append(i)else:res = max(res, i-stack[-1])return res
解题思路二:dp 方法-不会

数组

[54. 螺旋矩阵-中等]

[59. 螺旋矩阵 II-中等]

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

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

相关文章

【Hello Go】Go语言文本文件处理

文本文件处理 字符串处理字符串操作ContainsJoinindexrepeatReplaceSplitTrimFields 字符串转换AppendFormatParse 正则表达式Json处理编码Json通过结构体生产Json通过map生产json 解码Json解析到结构体解析到interface 文件操作相关api介绍建立和打开文件关闭文件写文件读文件…

中国出海主力系列专访之三七互娱:亚马逊云科技助力三七互娱海外“出圈”之路

如果问,在众多的中国出海赛道中哪一条拥有基数最大的粉丝拥趸?以网络游戏、社交媒体、直播、短视频为代表的泛娱乐赛道便成为当仁不让的领跑者。 在东京、新加坡、开罗、伦敦、纽约、慕尼黑等国际都市,当地的年轻人会随时随地的打开“中国造”…

JOSEF 静态中间继电器 ZJY-420 DC220V 板前接线,带底座 增加触点

系列型号: ZJY-400中间继电器;ZJY-600中间继电器; ZJY-800中间继电器;ZJY-020中间继电器; ZJY-040中间继电器;ZJY-060中间继电器; ZJY-006中间继电器;ZJY-008中间继电器;…

SD-WAN技术:重新定义网络连接方式

随着数字化转型的不断加速,企业对网络的需求呼之欲出。传统的WAN网络由于配置复杂、成本高昂以及带宽利用率低等问题而面临挑战。这时SD-WAN技术的出现正好派上了用场,通过其虚拟化、自动化和智能化的技术手段,大幅度提高了企业网络性能和可靠…

Ps:裁剪工具 - 裁剪预设的应用

裁剪工具提供了两种类型的裁剪方式。 一种是仅按宽高比(比例)进行裁剪,常在对图像进行二次构图时采用。 另一种则按指定的图像尺寸(宽度值和高度值)及分辨率(宽 x 高 x 分辨率)进行裁剪。其实质…

关于一些网络的概述

语义分割网络是一种基于深度学习的计算机视觉技术,它能够将图像中的每个像素分配给特定的类别,从而实现对图像中不同对象的精确识别和定位。近年来,随着深度学习技术的不断发展,语义分割网络在各个领域都取得了显著的进展。 早期的语义分割网络主要采用全卷积神经网络(FC…

scala的schema函数(算子)

在翻阅一些代码的时候,schema算子好像没碰到过,比较好奇structField这个类型,为什么可以直接用name参数,就翻阅了下资料: 在 Apache Spark 中,DataFrame 是一种分布式的数据集,它是以类似于关系…

OFI libfabric原理及应用解析

Agenda 目录/议题 编译通信软件硬件和软件带来的挑战为什么需要libfabriclibfabric架构API分组socket应用 VS libfabric应用区别GPU数据传输示例 编译通信软件 可靠面向连接的TCP和无连接的数据报UDP协议高性能计算HPC或人工智能AI 软硬件复杂性带来的挑战 上千个节点的集群, …

8.Gin 自定义控制器

8.Gin 自定义控制器 前言 在上一篇路由文件抽离的过程中,我们发现接口的业务逻辑还写在路由配置中,如下: 1696385129126 但是如果业务逻辑比较多,如果写在路由之中,肯定不合适。 我们可以将业务逻辑抽离,单…

使用Pytorch实现linear_regression

使用Pytorch实现线性回归 # import necessary packages import torch import torch.nn as nn import numpy as np import matplotlib.pyplot as plt# Set necessary Hyper-parameters. input_size 1 output_size 1 num_epochs 60 learning_rate 0.001# Define a Toy datas…

操作系统 应用题 例题+参考答案(考研真题)

1.(考研真题)一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms到达,它们的计算和I/O操作顺序如下。 P1:计算60ms,I/O 80ms,计算20ms。 P2:计算120ms,I/O 40ms&…

<Linux>权限管理|权限分类|权限设置|权限掩码|粘滞位

文章目录 Linux权限的概念Linux权限管理a. 文件访问者的分类b. 文件类型和访问权限c. 文件权限表示方法d. 文件权限的设置权限掩码file指令粘滞位 权限总结权限作业 Linux权限的概念 Linux下有两种用户:超级用户(root)和普通用户。 超级用户:可以在Lin…

学生党的福利!移动云重磅升级存储产品体系

如今,随着科学技术不断发展进步,电子产品的生产技术也变得越来越成熟。一方面,电子产品的功能越来越强大,质量越来越可靠;另一方面,产品价格越来越便宜,在人们生活中越来越普及。大学生群体可以…

基于纳什博弈的多微网主体电热双层共享策略(matlab代码)

目录 ​1 主要内容 2 部分代码 3 程序结果 4 下载链接 ​1 主要内容 该程序复现《Multi-Micro-Grid Main Body Electric Heating Double-Layer Sharing Strategy Based on Nash Game》模型,主要做的是构建基于纳什博弈的多微网主体电热双层共享模型,…

java项目之木里风景文化管理平台(ssm+vue)

项目简介 木里风景文化管理平台实现了以下功能: 前台功能:用户进入系统可以实现首页,旅游公告,景区,景区商品,景区美食,旅游交通工具,红黑榜,个人中心,后台…

squid代理服务器(传统代理、透明代理、反向代理、ACL、日志分析)

一、Squid 代理服务器 (一)代理的工作机制 1、代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。 2、将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速…

Stable Diffusion XL网络结构-超详细原创

强烈推荐先看本人的这篇 Stable Diffusion1.5网络结构-超详细原创-CSDN博客 1 Unet 1.1 详细整体结构 1.2 缩小版整体结构 以生成图像1024x1024为例,与SD1.5的3个CrossAttnDownBlock2D和CrossAttnUpBlock2D相比,SDXL只有2个,但SDXL的Cros…

Rust语言精讲:数据类型全解析

大家好!我是lincyang。 今天,我们将深入探讨Rust语言中的数据类型,这是理解和掌握Rust的基础。 Rust语言数据类型概览 Rust是静态类型语言,所有变量类型在编译时确定。Rust的数据类型分为两类:标量类型和复合类型。…

动态神经网络时间序列预测

大家好,我是带我去滑雪! 神经网络投照是否存在反锁与记忆可以分为静态神经网络与动态神经网络。动态神经网络是指神经网络带有反做与记忆功能,无论是局部反馈还是全局反锁。通过反馈与记忆,神经网络能将前一时刻的数据保留&#x…

【ARM AMBA AXI 入门 15 -- AXI-Lite 详细介绍】

请阅读【ARM AMBA AXI 总线 文章专栏导读】 文章目录 AXI LiteAXI-Full 介绍AXI Stream 介绍AXI Lite 介绍AXI Full 与 AIX Lite 差异总结AXI Lite AMBA AXI4 规范中包含三种不同的协议接口,分别是: AXI4-FullAXI4-LiteAXI4-Stream 上图中的 AXI FULL 和 AIX-Lite 我们都把…