【数据结构】栈和队列OJ面试题
20. 有效的括号 - 力扣(LeetCode)
思路:由于C语言没有栈的接口,所以我们需要自己造一个“模子”。我们直接copy之前的实现的栈的接口就可以了(可以看我之前的博客【数据结构】栈和队列-CSDN博客copy接口),同时要注意要将typedef的STDataType从int类型改成char类型。在此之后,依次取出字符串中的字符判断,如果是左括号,则入栈。如果是右括号,则依次和栈顶字符去进行配对,然后出栈。再进行判断,配对则返回false,否则判断下一个字符。再while循环结束后还要再一次判空,排除栈中还有字符未进行判断的情况。

225. 用队列实现栈 - 力扣(LeetCode)
思路:由于C语言没有队列的接口,所以同样也需要我们自己造出一个“模子”来。再【数据结构】栈和队列-CSDN博客这篇博客中同样也有关于队列的接口,再这里我们直接copy一下队列的接口。
关于用队列实现栈,我们的思路是这样的,首先,创建出两个队列,一个队列用来在出栈时拷贝,一个队列用来在出栈时接受拷贝,所以这就要求一个队列必须是空的,而另一个队列的功能就是扮演栈的角色(因为队列出入数据是先进先出的,栈出入数据是先进后出的,所以在数据出栈的时候,只能用队列的拷贝来实现栈的数据出栈)。其他接口直接使用队列的接口就基本可以完成。

另外,要注意的是,在最后销毁栈的时候,需要先销毁两个队列再销毁栈,以免出现有野指针的情况。
232. 用栈实现队列 - 力扣(LeetCode)
思路:这道题同样需要用之前写的栈造一个“模子”。在解决这道题目时,需要我们创建两个栈去实现(st1用来存放数据,st2用来导数据)。当我们pop数据的时候,需要先将创建好的st1中的数据依次出栈到st2的栈中,然后将st2中的栈顶数据pop掉 ,最后将st2中的数据重新导回到st1中。在实现myQueuePeek(myQueuePeek接口要求我们返回队列开头的元素)接口的时候也是同样的方法,先将st1中的数据导到st2中,只不过接下来不需要pop栈顶元素,只需要记录下栈顶元素,然后再导回st1中,最后再返回记录下的元素就好了。其他的接口用之前实现栈的接口就可以基本解决了。

622. 设计循环队列 - 力扣(LeetCode)
思路:在这道题目中,我们采用顺序表的方法来完成。首先需要动态申请一个数组,然后初始化结构体。结构体中的head指向数组中的第一个节点,tail指向数组中最后一个节点的下一个节点,k的意思是数组中一共有k个数据。这里有接口需要我们判空和判满,但是如果就按这种思路写下去的话,我们会发现判空和判满的条件是一样的,都是head==tail。

那么我们应该如何去解决这个问题呢?这里我们有两种解决方案。第一种是在多开一个数组的空间,这样当队列满的时候的判空条件就变成了tail+1==head了,就避免了判空和判满条件一样的情况了。第二种方法是加一个size去判断队列中数据的个数。在此我们采用第一种方法来完成代码。

还需要注意的一个接口是取队尾的接口,这个接口需要取tail前一个结点,但是有一种特殊的情况就是tail是数组中第一个空间,这时候tail在-1的话就会变成-1,而不是指向第5块空间。这是我们可以进行一个判断,如果tail是第一块空间,那么则返回地5块空间的数据,否则返回第tail-1块的空间就可以了。或者我们可以取第((tail-1)+(k+1))%(k+1)个数据就是队列的队尾数据。

相关文章:
【数据结构】栈和队列OJ面试题
20. 有效的括号 - 力扣(LeetCode) 思路:由于C语言没有栈的接口,所以我们需要自己造一个“模子”。我们直接copy之前的实现的栈的接口就可以了(可以看我之前的博客【数据结构】栈和队列-CSDN博客copy接口)&…...
【联邦学习——手动搭建简易联邦学习】
1. 目的 用于记录自己在手写联邦学习相关实验时碰到的一些问题,方便自己进行回顾。 2. 代码 2.1 本地模型计算梯度更新 # 比较训练前后的参数变化 def compare_weights(new_model, old_model):weight_updates {}for layer_name, params in new_model.state_dic…...
Springboot项目如何创建单元测试
文章目录 目录 文章目录 前言 一、SpringBoot单元测试的使用 1.1 引入依赖 1.2 创建单元测试类 二、Spring Boot使用Mockito进行单元测试 2.1 Mockito中经常使用的注解以及注解的作用 2.2 使用Mockito测试类中的方法 2.3 使用Mockito测试Controller层的方法 2.4 mock…...
Win10 如何同时保留两个CUDA版本并自由切换使用
环境: Win10 专业版 CUDA11.3 CUDA11.8 问题描述: Win10 如何同时保留两个CUDA版本并自由切换 解决方案: 在同一台计算机上安装两个CUDA版本并进行切换可以通过一些环境配置来实现。这通常涉及到管理环境变量,特别是PATH和L…...
实验室纳新宣讲会(java后端)
前言 这是陈旧已久的草稿2021-09-16 15:41:38 当时我进入实验室,也是大二了,实验室纳新需要宣讲, 但是当时有疫情,又没宣讲成。 现在2024-5-12 22:00:39,发布到[个人]专栏中。 实验室纳新宣讲会(java后…...
class常量池、运行时常量池和字符串常量池的关系
类常量池、运行时常量池和字符串常量池这三种常量池,在Java中扮演着不同但又相互关联的角色。理解它们之间的关系,有助于深入理解Java虚拟机(JVM)的内部工作机制,尤其是在类加载、内存分配和字符串处理方面。 类常量池…...
Java | Leetcode Java题解之第88题合并两个有序数组
题目: 题解: class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int p1 m - 1, p2 n - 1;int tail m n - 1;int cur;while (p1 > 0 || p2 > 0) {if (p1 -1) {cur nums2[p2--];} else if (p2 -1) {cur nums1[p…...
韵搜坊(全栈)-- 前后端初始化
文章目录 前端初始化后端初始化 前端初始化 使用ant design of vue 组件库 官网快速上手:https://www.antdv.com/docs/vue/getting-started-cn 安装脚手架工具 进入cmd $ npm install -g vue/cli # OR $ yarn global add vue/cli创建一个项目 $ vue create ant…...
Android:资源的管理,Glide图片加载框架的使用
目录 一,Android资源分类 1.使用res目录下的资源 res目录下资源的使用: 2.使用assets目录下的资源 assets目录下的资源的使用: 二,glide图片加载框架 1.glide简介 2.下载和设置 3.基本用法 4.占位符(Placehold…...
conll-2012-formatted-ontonotes-5.0中文数据格式说明
CoNLL-2012 数据格式是用于自然语言处理任务的一种常见格式,特别是在命名实体识别、词性标注、句法分析和语义角色标注等领域。这种格式在 CoNLL-2012 共享任务中被广泛使用,该任务主要集中在语义角色标注上。 CoNLL-2012 数据格式通常包括多列…...
SpringBoot集成Seata分布式事务OpenFeign远程调用
Docker Desktop 安装Seata Server seata 本质上是一个服务,用docker安装更方便,配置默认:file docker run -d --name seata-server -p 8091:8091 -p 7091:7091 seataio/seata-server:2.0.0与SpringBoot集成 表结构 项目目录 dynamic和dyna…...
视觉检测系统,是否所有产品都可以进行视觉检测?
视觉检测系统作为一种先进的质检工具,虽然具有广泛的应用范围,但并非所有产品都适合进行视觉检测。本文将探讨视觉检测系统的适用范围及其局限性。 随着机器视觉技术的快速发展,视觉检测系统已广泛应用于各个行业,为产品质检提供…...
通过金山和微软虚拟打印机转换PDF文件,流程方法及优劣对比
文章目录 一、WPS/金山 PDF虚拟打印机1、常规流程2、PDF文件位置3、严重缺陷二、微软虚拟打印机Microsoft Print to Pdf1、安装流程2、微软虚拟打印机的优势一、WPS/金山 PDF虚拟打印机 1、常规流程 安装过WPS办公组件或金山PDF独立版的电脑,会有一个或两个WPS/金山 PDF虚拟…...
采用java+B/S开发的全套医院绩效考核系统源码springboot+mybaits 医院绩效考核系统优势
采用java开发的全套医院绩效考核系统源码springbootmybaits 医院绩效考核系统优势 医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求,以“工作量为基础的考核方案”为核心思想,结合患者满意度、服务质量、技术难度、工作效率、医德医风等管…...
驱动开发-用户空间和内核空间数据传输
1.用户空间-->内核空间(写) #include<linux/uaccess.h> int copy_from_user(void *to,const void __user volatile*from,unsigned long n) 函数功能:将用户空间数据拷贝到内核空间 参数: to:内核空间首地…...
【408精华知识】速看!各种排序的大总结!
文章目录 一、插入排序(一)直接插入排序(二)折半插入排序(三)希尔排序 二、交换排序(一)冒泡排序(二)快速排序 三、选择排序(一)简单选…...
【STM32 |程序实例】按键控制、光敏传感器控制蜂鸣器
目录 前言 按键控制LED 光敏传感器控制蜂鸣器 前言 上拉输入:若GPIO引脚配置为上拉输入模式,在默认情况下(GPIO引脚无输入),读取的GPIO引脚数据为1,即高电平。 下拉输入:若GPIO引脚配置为下…...
Spring boot使用websocket实现在线聊天
maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spr…...
品牌设计理念和logo设计方法
一 品牌设计的目的 设计是为了传播,让传播速度更快,传播效率更高,减少宣传成本 二 什么是好的品牌设计 好的设计是为了让消费者更容易看懂、记住的设计, 从而辅助传播, 即 看得懂、记得住。 1 看得懂 就是让别人看懂…...
Python | Leetcode Python题解之第88题合并两个有序数组
题目: 题解: class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:"""Do not return anything, modify nums1 in-place instead."""p1, p2 m - 1, n - 1tail m n - 1whi…...
5步打造Xbox 360游戏PC运行环境:Xenia Canary模拟器全攻略
5步打造Xbox 360游戏PC运行环境:Xenia Canary模拟器全攻略 【免费下载链接】xenia-canary Xbox 360 Emulator Research Project 项目地址: https://gitcode.com/gh_mirrors/xe/xenia-canary Xenia Canary作为领先的Xbox 360开源模拟器,通过精准的…...
CUDA中Shared Memory的Bank Conflict
1. 核心概念引入 (What & Why)笔记的开头需要明确 Shared Memory 的物理结构,这是理解冲突的前提。Shared Memory 的组织方式: CUDA 的共享内存被划分为 32 个大小相等的内存块,称为 Banks(存储体)。Bank 的宽度&a…...
如何通过CPUDoc智能调度技术提升CPU性能与能效比
如何通过CPUDoc智能调度技术提升CPU性能与能效比 【免费下载链接】CPUDoc 项目地址: https://gitcode.com/gh_mirrors/cp/CPUDoc 你是否曾因电脑运行卡顿、游戏帧率不稳或多任务处理缓慢而烦恼?现代CPU虽然拥有强大算力,但Windows系统的默认调度…...
AI辅助开发新体验:让快马智能生成带交互功能的企业级网站代码
今天想和大家分享一个有趣的实践:如何用AI辅助开发工具快速搭建一个具备高级交互功能的科技公司官网。整个过程在InsCode(快马)平台上完成,体验非常流畅。 项目需求分析 这个官网需要三个核心交互功能:平滑滚动/视差滚动的首页、动态过滤的产…...
wan2.1-vae效果可视化对比:同一提示词下1024×1024 vs 2048×2048细节放大实测
wan2.1-vae效果可视化对比:同一提示词下10241024 vs 20482048细节放大实测 你肯定遇到过这种情况:用AI生成了一张图,乍一看挺不错,但放大一看,细节就糊了,或者充满了奇怪的噪点和扭曲。尤其是在需要高清大…...
CAT使用教程
CAT(Cisco Auditing Tool)是一款专门用于审计Cisco网络设备安全性的工具,主要功能是对Cisco路由器、交换机等设备进行弱口令检测和漏洞扫描。其核心作用是帮助网络安全人员识别Cisco设备中存在的安全隐患,如默认或弱社区字符串&am…...
WeKnora知识沉淀方法论:构建企业数字资产的完整流程
WeKnora知识沉淀方法论:构建企业数字资产的完整流程 1. 引言 在信息爆炸的时代,企业每天产生大量文档、报告、邮件等知识资产,但这些宝贵资源往往散落在各个角落,难以有效利用。传统的关键词搜索已经无法满足企业对知识管理的需…...
FineReport 11安装配置全攻略:从下载到问题解决一站式指南
FineReport 11实战指南:从零搭建企业级报表平台 在企业数字化转型浪潮中,数据可视化与报表工具已成为刚需。作为国内领先的商业智能解决方案,FineReport 11凭借其强大的数据连接能力、灵活的报表设计功能和直观的操作界面,正成为越…...
Wan2.2-I2V-A14B企业级应用:SpringBoot微服务集成与视频生成API实战
Wan2.2-I2V-A14B企业级应用:SpringBoot微服务集成与视频生成API实战 1. 企业视频内容生产的痛点与机遇 在数字化营销和远程办公成为主流的今天,企业对于视频内容的需求呈现爆发式增长。从产品演示视频到员工培训材料,再到社交媒体营销内容&…...
告别重复劳动:用快马平台集成codex,自动生成模型与api代码提升效率
作为一名经常需要开发用户管理系统的开发者,我深刻体会到重复编写基础代码的繁琐。最近在InsCode(快马)平台尝试了集成codex模型的功能,发现它能显著提升开发效率。下面分享我的实践过程: 用户数据模型生成 传统方式需要手动定义每个字段类型…...
