高校校园网网站内容如何建设做网站策划计划书

news/2025/9/28 17:58:19/文章来源:
高校校园网网站内容如何建设,做网站策划计划书,哈尔滨市建设工程招标网,我的世界查找建筑网站1.栈与队列 文章目录 1.栈与队列写在前面1.1栈与队列理论基础1.2用栈实现队列1.3用队列实现栈1.4有效的括号1.5删除字符串中的所有相邻重复项1.6逆波兰表达式求值1.7滑动窗口最大值1.8前K个高频元素 Reference 写在前面 本系列笔记主要作为笔者刷题的题解#xff0c;所用的语…1.栈与队列 文章目录 1.栈与队列写在前面1.1栈与队列理论基础1.2用栈实现队列1.3用队列实现栈1.4有效的括号1.5删除字符串中的所有相邻重复项1.6逆波兰表达式求值1.7滑动窗口最大值1.8前K个高频元素 Reference 写在前面 本系列笔记主要作为笔者刷题的题解所用的语言为Python3若于您有助不胜荣幸。 1.1栈与队列理论基础 栈[stack]是一种先进后出逻辑的线性数据结构。栈的常用操作如表所示 方法描述时间复杂度push()元素入栈 O ( 1 ) \mathcal{O}(1) O(1)pop()栈顶元素出栈 O ( 1 ) \mathcal{O}(1) O(1)peek()访问栈顶元素 O ( 1 ) \mathcal{O}(1) O(1) 队列[queue]是一种先进先出逻辑的线性数据结构。我们将队列的头部称为“队首”尾部称为“队尾”将把元素加入队尾的操作称为“入队”删除队首元素的操作称为“出队”。为了统一我们采用和栈相同的命名方式 方法描述时间复杂度push()元素入队即将元素添加到队尾 O ( 1 ) \mathcal{O}(1) O(1)pop()队首元素出队 O ( 1 ) \mathcal{O}(1) O(1)peek()访问队首元素 O ( 1 ) \mathcal{O}(1) O(1) 1.2用栈实现队列 232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作push、pop、peek、empty 实现 MyQueue 类 void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空返回 true 否则返回 false 思路:使用两个栈来实现一个队列我们需要一个栈充当in负责接收元素另一个栈充当out负责弹出元素每当我们需要弹出元素的时候我们就将in中的所有元素弹出并加入到out中然后再从out中弹出栈顶元素。 class MyQueue:def __init__(self):self.stack_in: List []self.stack_out: List []def push(self, x: int) - None:while self.stack_out: # 将out栈中的元素恢复到in栈中self.stack_in.append(self.stack_out.pop())self.stack_in.append(x) # 添加新元素def pop(self) - int:if self.empty():return Noneif self.stack_out:return self.stack_out.pop()else:while self.stack_in:self.stack_out.append(self.stack_in.pop())return self.stack_out.pop()def peek(self) - int:res: int self.pop()self.stack_out.append(res)return resdef empty(self) - bool:return not self.stack_in and not self.stack_out # 只要in或out含有元素说明队列不为空1.3用队列实现栈 225. 用队列实现栈 请你仅使用两个队列实现一个后入先出LIFO的栈并支持普通栈的全部四种操作push、top、pop 和 empty。 实现 MyStack 类 void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的返回 true 否则返回 false 。 思路我们可以使用两个队列来实现一个栈或者使用一个队列来实现一个栈。两种方法都是可以的 解法一使用一个队列 # 使用一个队列来实现栈 from collections import deque class MyStack:def __init__(self):self.queue: deque deque()self.size: int 0def push(self, x: int) - None:self.queue.append(x)self.size 1def pop(self) - int:if self.empty():return Nonefor _ in range(self.size-1):self.queue.append(self.queue.popleft())self.size - 1return self.queue.popleft()def top(self) - int:if self.empty():return Noneans: int self.pop()self.push(ans)return ansdef empty(self) - bool:return not self.queue解法二使用两个队列 from collections import deque class MyStack:def __init__(self):self.que_in: deque deque()self.que_out: deque deque()def push(self, x: int) - None:while self.que_out: # 将out中的元素恢复到in中self.que_in.append(self.que_out.popleft())self.que_in.append(x) # 添加新的元素def pop(self) - int:1. 首先确认不空2. 因为队列的特殊性FIFO所以我们只有在pop()的时候才会使用queue_out3. 先把queue_in中的所有元素除了最后一个依次出列放进queue_out4. 交换in和out此时out里只有一个元素5. 把out中的pop出来即是原队列的最后一个tip这不能像栈实现队列一样因为另一个queue也是FIFO如果执行pop()它不能像stack一样从另一个pop()所以干脆in只用来存数据pop()的时候两个进行交换if self.empty():return Nonefor _ in range(len(self.que_in)-1): # 保存前n-1个元素self.que_out.append(self.que_in.popleft())self.que_out, self.que_in self.que_in, self.que_out # 这里很重要return self.que_out.popleft()def top(self) - int:if self.empty():return Nonefor _ in range(len(self.que_in)-1): # 保存前n-1个元素self.que_out.append(self.que_in.popleft())self.que_out, self.que_in self.que_in, self.que_outans: int self.que_out.popleft()self.que_in.append(ans)return ansdef empty(self) - bool:return not self.que_in and not self.que_out使用两个队列用存储空间来换取时间明显看出这样的执行速度更快。 1.4有效的括号 20. 有效的括号 给定一个只包括 (){}[] 的字符串 s 判断字符串是否有效。 有效字符串需满足 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 思路首先我们需要找到有哪些不匹配的情况其实这道题目一共只有三种不匹配的情况分别是 情况1字符串左边存在多余的括号([{}]()情况2字符串中间存在不匹配的括号[{(]}]情况3字符串右边存在多余的括号[{}]())) 针对这三种情况我们分别来进行处理即可。 class Solution:def isValid(self, s: str) - bool:stack: List []if len(s) % 2 ! 0: # 剪枝可省略return Falsefor char in s:if char (:stack.append())elif char [:stack.append(])elif char {:stack.append(})elif not stack or char ! stack[-1]: # 处理情况二中间不匹配或者情况三右边有多余的元素return Falseelse:stack.pop()return True if not stack else False # 处理情况一左边有多余的元素1.5删除字符串中的所有相邻重复项 1047. 删除字符串中的所有相邻重复项 给出由小写字母组成的字符串 S重复项删除操作会选择两个相邻且相同的字母并删除它们。 在 S 上反复执行重复项删除操作直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 思路这是一道典型的使用栈来完成的题目我们只需要判断入栈的元素是否等于栈顶元素如果等于则表明这是一对需要删除的元素我们只需要移除栈顶元素即可最后返回由栈中所有元素构成的字符串即可。 class Solution:def removeDuplicates(self, s: str) - str:stack: List[str] []for c in s:if stack and c stack[-1]: # 如果当前入栈的元素等于栈顶元素且栈不为空则删除栈顶元素stack.pop()else:stack.append(c)return .join(stack)1.6逆波兰表达式求值 150. 逆波兰表达式求值 给你一个字符串数组 tokens 表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 思路什么是逆波兰表达式呢这其实是一种方便计算机运算的存储方式逆波兰表达式其实是相当于二叉树的后序遍历本题中每一个子表达式要得出一个结果然后拿这个结果再进行运算这就非常像一个字符串匹配的问题我们就可以用栈这种数据结构来进行处理。注意第一个弹出的数字应该在运算符的后面。 class Solution: def evalRPN(self, tokens: List[str]) - int:op_map {: add, -: sub, *: mul, /: lambda x, y: int(x/y)}stack: List[int] []for c in tokens:if c in [, -, *, /]:num2 stack.pop()num1 stack.pop()stack.append(op_map[c](num1, num2)) # 第一个出来的在运算符后面else:stack.append(int(c))return stack[-1] 1.7滑动窗口最大值 239. 滑动窗口最大值 给你一个整数数组 nums有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 思路维护一个单调队列如果push()进的值大于当前队列的队首位置的则将队列清空再将这个值push()进来这样就维护了一个单调递减的队列并且每次访问队首位置就能够访问队列中的最大值那我们应该如何做pop()呢通常来说做pop()不需要传入任何的值但是这里我们可以判断我们当前需要pop()的值是否和队首的位置相等如果相等则表明这是需要弹出的元素 pop(value)如果窗口移除的元素value等于单调队列的出口元素那么队列弹出元素否则不用任何操作push(value)如果push的元素value大于入口元素的数值那么就将队列入口的元素弹出直到push元素的数值小于等于队列入口元素的数值为止 保持如上规则每次窗口移动的时候只要问que.front()就可以返回当前窗口的最大值。 from collections import deque class MyQueue:def __init__(self): # 单调队列从大到小self.que: deque deque()#每次弹出的时候比较当前要弹出的数值是否等于队列出口元素的数值如果相等则弹出。#同时pop之前判断队列当前是否为空。def pop(self, value):if self.que and self.que[0] value:self.que.popleft()#如果push的数值大于入口元素的数值那么就将队列后端的数值弹出直到push的数值小于等于队列入口元素的数值为止。#这样就保持了队列里的数值是单调从大到小的了。def push(self, value):while self.que and value self.que[-1]:self.que.pop()self.que.append(value)def front(self):return self.que[0]class Solution:def maxSlidingWindow(self, nums: List[int], k: int) - List[int]:result: List[int] []queue: MyQueue MyQueue()for i in range(k):queue.push(nums[i])result.append(queue.front())for i in range(k, len(nums)):queue.pop(nums[i-k]) # 判断进入上个队列的首个元素还存在吗如果存在就表明这个元素是最大的值并且没有被pop掉就手动popleft掉这个元素queue.push(nums[i])result.append(queue.front())return result1.8前K个高频元素 347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k 请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 思路先使用哈希法得到一个可供查询的map然后获取这个map中value值的前k个即可但是我们无需对整个map都进行排序而是我们只维护一个大小为k的有序区间。这就涉及到了大顶堆和小顶堆这样的数据结构。这里涉及到选择小顶堆还是大顶堆的问题如果我们选择大顶堆的话每次弹出的元素都是最大的元素这样我们就把最大的元素都弹出了只保留了较小的元素相反如果我们选择小顶堆的话每次弹出都是弹出最小的元素这样就保留了加大的元素。 import heapq class Solution:def topKFrequent(self, nums: List[int], k: int) - List[int]:elem_map: dict {}for elem in nums:elem_map[elem] elem_map.get(elem, 0) 1# 对频率进行排序,定义一个小顶堆pri_que []for key, value in elem_map.items():heapq.heappush(pri_que, (value, key)) # heapq按照tuple中的第一个元素来进行排序if len(pri_que) k: #如果堆的大小大于了K则队列弹出保证堆的大小一直为kheapq.heappop(pri_que)return [key for value, key in pri_que] # 对返回的顺序没有要求我们可以不用每次都进行弹出import heapq class Solution:def topKFrequent(self, nums: List[int], k: int) - List[int]:elem_map: dict {}for elem in nums:elem_map[elem] elem_map.get(elem, 0) 1# 对频率进行排序,定义一个小顶堆pri_que: List[int] []for key, value in elem_map.items():heapq.heappush(pri_que, (value, key)) # heapq按照tuple中的第一个元素来进行排序if len(pri_que) k: #如果堆的大小大于了K则队列弹出保证堆的大小一直为kheapq.heappop(pri_que)res: List[int] [0] * kfor i in range(k): # 按照频率顺序进行弹出res[k-i-1] heapq.heappop(pri_que)[1]return resReference [1] Hello 算法 [2] 代码随想录

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

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

相关文章

Altium Designer 25.8.1 最新版安装指南

软件介绍 Altium Designer 25.8.1是一款功能强大的电子设计自动化(EDA)软件,广泛应用于消费电子、通信、汽车、航空航天等行业的电子设计开发。它集成了原理图设计、PCB布局、3D建模、仿真、文档生成等功能,无需切…

2025 年最新推荐地坪源头厂商权威排行榜:聚焦环氧 / 聚氨酯 / 固化剂等多类型地坪,精选 TOP5 优质企业水性聚氨酯/环氧/密封固化剂地坪施工厂商推荐

2025 年地坪行业虽在绿色环保与智能化趋势下持续发展,但市场乱象依旧突出。大量中小企业扎堆低端市场,同质化竞争激烈,价格战频发导致产品与服务质量参差不齐;高端功能性地坪材料仍存在部分依赖进口的情况,国产替…

杂题笔记

CF2133F Flint and Steel 首先把每个能爆炸的苦力怕爆炸极限跑出来,配合苦力怕位置(核心)组一个结构体 注意到爆炸序列是合法当且仅当不存在两个被引爆的苦力怕,他们的互相包含对方的核心 那么相邻两个苦力怕存在三…

HyperWorks许可证服务器配置

在复杂的工程设计和仿真环境中,高效、稳定的许可证服务器配置是确保团队顺畅协作、资源最大化利用的关键。HyperWorks作为业界领先的工程仿真软件,提供了灵活、可靠的许可证服务器配置方案,帮助用户轻松管理许可证资…

算法篇

算法 Algorithm 模拟 Simulation 模拟是基础,体现出你的代码能力,同时也考察你的阅读理解,以及情况是否考虑清楚 基本功:字符串输入[蓝桥杯 2022 国 AC] 内存空间 计算某年某月某日是星期几:如果纯模拟非常麻烦,…

企业网站设计模板免费下载夜间直播平台排行榜前十名

1、前言 本章将介绍yolov5的改进项目,为v5增加新的模块---注意力机制、SE模块 大部分更改的代码是重复的,只有少部分需要更改,下面会详细讲解 yolov5的yaml文件介绍:YOLOV5 模型:利用tensorboard查看网络结构和yaml文件介绍-CSDN博客 yolov5的模块更改,C3更改为C2f模块…

广东省建设厅投诉网站服务器网站过多对排名

无符号文件的驱动中断DriverEntry方法 当我们调试有符号的windows驱动时,通常可以使用bu module!DriverEntry, 在模块的DriverEntry位置打上断点。 那么对于无符号驱动,应该如何找到DriverEntry函数的位置呢? 从正常的DriverEntry的调用栈…

帮网站做代理怎么在网上做广告宣传

导读:面向应用工程师的商业软件咨询、自研软件定制开发服务的仿真公众号,点击关注进入菜单,查看更多精彩内容。(三)如何实现多核并行计算呢?了解了多核、多Machine、多Rack后,我可以看一下软件(程序)是如何对这些资源进…

网站备案用座机租用办公空间设计主题名称

👉原文阅读 💡章前提示 本文采用8084端口进行连接,是EMQX 默认提供了四个常用的监听器之一,如果需要添加其他类型的监听器,可参考官方文档🔗管理 | EMQX 文档。 本文使用自签名CA,需要提前在L…

2025 年二氧化氯发生器厂家最新权威推荐排行榜:TOP 级企业技术实力与成本优势解析,助力用户精准选购电解法二氧化氯发生器/电解食盐二氧化氯发生器厂家推荐

随着水处理行业对消毒环节的重视程度不断提升,二氧化氯发生器作为核心消毒设备,其市场需求持续增长。但当前市场中品牌数量众多,产品质量差异显著,部分设备存在技术落后、运行成本高、维护困难等问题,甚至无法满足…

如何找到当前计算机所有的UnrealEngine安装位置

使用UnrealEngine主要有两种方式:1.通过EpicGameLauncher安装 2. 通过源代码自行编译。 1. 通过EpicGameLauncher安装时,安装的版本和安装位置记录在注册表的这个位置:HKEY_LOCAL_MACHINE\SOFTWARE\EpicGames\Unrea…

阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施

随着大模型技术的飞速发展,我们正从云原生时代迈向一个全新的 AI 原生应用时代。智能体(Agent)作为能够自主理解、决策并执行任务的全新应用范式,正在重塑软件的定义。然而,在生产环境中规模化落地 Agent 面临着开…

配电网一次设备

配电网一次设备包括:变压器、断路器、负荷开关、隔离开关、熔断器、电压互感器电流互感器等。1、配电网自动化对一次设备的要求:(1)需要实现遥信功能的开关设备,应至少具备一组辅助触点;需要实现遥测功能的一次设…

Visual Studio 项目中常用的Properties

PropertyExpands ToExample (Debug build of xxx)$(ProjectDir) Full path to the project folder (with trailing \) C:\Repos\xxx\$(SolutionDir) Full path to the solution folder (with trailing \) C:\Repos\xxx…

英文网站群建设平面设计广告设计培训班

在使用CMutex过程中,看到别人使用了CSingleLock类,想着明明CMutex已经可以实现线程同步了,为什么还有使用CSingleLock类呢? 在MFC中,虽然CMutex类本身可以实现线程同步,但通常会与CSingleLock类一起使用&am…

winform 烦人的键盘事件 再遇上 chart 上下左右 失灵

AI 用多了会失去思考耐心using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading…

2025 年铝板品牌最新权威推荐排行榜:1-7 系主流铝板企业 TOP5 精选及工艺品质测评指南1060/1100/3003/3004/5052/6061/6063/6082铝板厂家推荐

在工业制造、建筑装饰、交通运输等领域高速发展的当下,铝板作为核心基础材料,其品质直接决定终端产品的稳定性与使用寿命。当前市场铝板品牌繁杂,部分企业因原材料把控松散、生产工艺落后,导致产品尺寸偏差大、表面…

大型语言模型(LLM)分类与特性全解析 - 教程

大型语言模型(LLM)分类与特性全解析 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

一只手都数的过来

“一只手都数的过来”。那么一只手能数多少个数呢?假设我们一只手有 \(5\) 根手指头,那么最多只能数 \(5\) 个数吗?每只手指头有两种状态——伸出或者不伸出,实际上,可以数出 \(2^5=32\) 个数。那么为什么我们平常…

环保网站源码创建全国文明城市主题班会教案

一次配置Docker环境的完整记录 Docker环境搭建报错与解决报错一报错二报错三 Docker环境搭建 本节介绍了一次配置docker环境的完整记录: 编写Dockerfile文件: FROM pytorch/pytorch:1.10.0-cuda11.3-cudnn8-develRUN rm /etc/apt/sources.list.d/cuda.l…