H面试(22):设计一个栈,能输出当前栈中最小元素

22届SHEIN校招面试--JAVA开发工程师面经 这里写自定义目录标题个人背景性格测评+笔试一面 8.30 同事面二面 9.08 tl面三面 9.13 hr面四面 9.16 部门总监面五面 9.25 CEO面面试总结+实习期的感受 今年一月,我投递了shein的Java实习岗位,当时没有准备充分,没有通过面试。今年九月,我卷土重来,顺利通过Shein提前批的五轮面试。现在已经提前去shein实习,成为一名光荣的sheiner了。先提前打个广告,shein的2022届的春招和2023届的实习招聘年后就会火速开启,使用我的内推码(NTAJPas) 投递的话, 阅读详情

 

#include<stdio.h>
#include<malloc.h>
#include<assert.h>
struct StcakElement
{
	int data;  //插入的元素的数值
	int min;  //存放当前栈中最小元素
};

struct Stack
{
	StcakElement * pStackElement;    //指向栈原始的指针,结合top就能操作栈顶元素
	int size;    //存放栈的容量           
	int top;   //存放下一个可用的栈的位置
};

 void StackInit(Stack* & pstack, int  maxsize )  //栈的初始化 
{
	assert(pstack);
    pstack->size = maxsize;
	pstack->top = 0;
	pstack->pStackElement =(StcakElement * )malloc(sizeof(StcakElement)*maxsize);
	
}

void StackFree (Stack stack)  //将栈销毁,释放申请的空间,减size设为0;
{
	free(stack.pStackElement);
	stack.size = 0;
	stack.top = 0;
}
void StackPush(Stack & stack, int data)  //入栈操作,把里面的一些元素初始化
{
	if(stack.top == stack.size)
		printf("out of stack space");
	StcakElement *  p = stack.pStackElement+stack.top;//也可以不用这样的一个指针变量P,这样写是因为后面的实在有点长  
	p->data = data;
	if(stack.top == 0)
	{
	  p->min =data;
	}
	else
	{
		p->min = (stack.pStackElement[stack.top-1]).min;//如果top不为0,则当前入栈的元素的min存放的是上一个栈顶元素中的最小值;
	}
	if(p-> min >data)    //将当前元素和入栈前的最小元素进行比较,如果比之前的的小,就把当前入栈的元素设为自己的data
		p->min = data;
	(stack.top)++;
}

void StackPop(Stack  &stack)//出栈操作
{
	if(stack.top == 0)
		printf("stack is empty");
	 stack.pStackElement[--stack.top]; //将指示栈顶原始的值减1
}
int StackMin(Stack stack)   //找到当前栈顶元素里存放的当前栈的最小值
{
	if(stack.top == 0)
		printf("stack is empty");
	return stack.pStackElement[stack.top-1].min;
}
int main( )
{  
	Stack stack;    //初始化
	Stack * pa = & stack ;
    StackInit( pa,5);


	StackPush(*pa,  0);
    StackPush(*pa,  5);
	StackPush(*pa, 3);
	StackPush(*pa,1);
    StackPop(*pa);

    int min = StackMin(*pa);
	printf("栈中当前最小的元素为:%d\n", min);
	return 0;
}


 

 

 

 

 

 

关于栈和队列常见笔试面试题 关于栈和队列相关笔试面试题:1.入栈、出栈、取栈中最小元素的时间复杂度0(1) 2.使用两个栈实现一个队列 3.使用两个队列实现一个栈 4.判断字符串入栈出栈的合法性,即判定字符串是否按照入栈出栈顺序 5.一个数组实现两个栈(共享栈) 阅读详情

相关推荐

BAT大厂Java面试必备:22道Java SpringBoot高频面试题(含答案)

前言 现在Java程序员出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,如果啃不下来,很可能就与大厂失之交臂。 所以小编总结了一些大厂常问的 Spring Boot面试题,希望能帮助到要面试的小伙伴。 1、什么是 Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂。访问spring官网页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加Ma

weixin_47955802的博客 2767

18.最小栈(返回栈的最小元素)

package java2019; import java.util.Stack; //定义栈的数据结构,得到栈的最小元素(定义辅助栈存储最小元素) 时间复杂度O(1) public class Demo18 { Stack<Integer> stack = new Stack<>(); Stack<Integer> smallstack = new S...

qq_43718903的博客 197

面经1:字节跳动:22年实习生大数据开发面试(一面凉经)

本人是一个双非硕士在读地研二狗,非科班出身,最近也是参加了大数据开发地面试,已拿到了哔哩哔哩和顺丰的大数据开发岗实习offer,现在把自己的面试经历分拨记录下来,记录了面试各个公司的问题和心经,给正在面试的你做一些适当的参考 字节跳动 第一家面试的公司就是字节跳动 面试时间:21.1.10 面试时长:1h13min 面试软件:飞书,字节自己开发的,在使用中发现了一些bug,面试官记录了下来反馈给了公司 这个面试可谓是把我虐的体无完肤了,从里到外都透漏着我啥也不是 首先进行了自我介绍,第一次面试并不是特别了解

weixin_46429290的博客 7894

关于leetcode刷题详细介绍

  虽然刷题一直饱受诟病,不过不可否认刷题确实能锻炼我们的编程能力,相信每个认真刷题的人都会有体会。现在提供在线编程评测的平台有很多,比较有名的有 hihocoder,LintCode,以及这里我们关注的 LeetCode。 LeetCode收录了许多互联网公司的算法题目,被称为刷题神器,我虽然早有耳闻,不过却一直没有上面玩过。   据了解,LeetCode 是一个非常棒的 OJ(Online J...

智者之家 9万+

【SAP PO】SAP PO 接口配置完整教程之二REST服务对接

SAP PO 接口配置完整教程之二REST服务对接

XLevon的博客 1万+

电力电子技术速通复习

一种完全纯净,结构完整的半导体晶体,其含有两种载流子而且,自由电子的浓度和空穴的浓度总是相等,一般情况下,在硅晶体中掺入P(磷)五价元素,多子为自由电子,少子为空穴;在硅晶体中掺入B(磷)三价元素,多子为空穴,少子为自由电子;6.PN结具有单相导电性,PN结具有雪崩击穿(T越高,击穿电压越大)和齐纳击穿(T越高,击穿电压越小),均可逆,热击穿不可逆;PN结具有电容效应,势垒电容(耗尽层变化等效的电容)扩散电容(非平衡少子引起的电荷量的变化等效出来的电容效应)

qq_62873973的博客 2507

LeetCode算法题整理(200题左右)

Leetcode

qq_38253797的博客 1万+

Databricks Genie:语义编译器架构与企业级智能解析实践

语义层是现代数据平台实现自然语言查询的核心基础,其本质是将业务术语映射为可执行、可治理的数据契约。原理上依赖结构化元数据、值字典与数据血缘三支柱协同,通过分层AI代理(如Intent Parsing、Retriever、Verifier)实现意图识别→语义对齐→安全执行的闭环。技术价值在于降低SQL使用门槛的同时保障审计性、一致性和权限可控性,适用于销售运营、财务分析等一线业务场景。本文深入解析Databricks Genie作为典型语义编译器的落地逻辑,涵盖Unity Catalog知识注入、七层Agen

weixin_29053695的博客 337

Leetcode各种题型题目+思路+代码(共176道题及答案)

文章目录 第一章:Leetcode 每日很多题 1、Leetcode-1047 删除字符串中的所有相邻重复项 2、剑指 Offer 53 - I. 在排序数组中查找数字 I 3、Leetcode704:二分查找 4、 Leetcode 227:基本计算器II 5、leetcode 224:基本计算器(带括号的计算) 6、Leetcode 15:三数之和:排序+双指针 7、剑指 offer 38.字符串的排列 8、Leetcode409:最长回文串 9、Leetcode 331:验证二叉树的前序序列化 10、

muli522的博客 4万+

深入解析AndroidManifest.xml与device_admin.xml:打造完美DeviceOwner应用配置

本文深入解析了Android企业级开发中DeviceOwner应用的核心配置文件AndroidManifest.xml与device_admin.xml。详细阐述了如何精准声明DeviceAdminReceiver、定义管理策略,并提供了通过ADB命令进行设置与验证的实战指南,帮助开发者构建权限完整、配置正确的设备所有者应用。

ice55的博客 682

JESD204B系统设计实战:如何用SYSREF信号搞定多设备时钟同步(附时序图详解)

本文深入探讨了JESD204B系统中SYSREF信号在多设备时钟同步中的关键作用与实现技巧。通过详细分析SYSREF信号的生成、PCB布局和时序调整,提供了一套完整的解决方案,帮助工程师解决高速数据转换器与FPGA协同工作中的时钟同步问题。文章还包含时序图详解和实测调试技巧,助力提升系统性能。

weixin_29313239的博客 457

leetcode算法与代码总结

leetcode代码总结1.动态规划问题动态规划思想介绍1. 1.动态规划问题 动态规划思想介绍 1.

一只在cv道路上爬行的小乌龟~ 4180

eMMC数据擦除的方式

接下来主要是讲解erase、trim、discard的差异,涉及的command有CMD35、CMD36、CMD38。一般用来擦除整卡或者某些分区,如果只想擦除一个。以下是device status的部分解释。eMMC的数据擦除方式有6种,分别是。将会跳过写保护,只执行其他的范围。Discard的命令序列是。Erase的命令序列是。的范围有包含写保护,Trim的命令序列是。

DPJimmy的博客 1774

《剑指Offer》面试题22:栈的压入、弹出序列

《剑指Offer》面试题22:栈的压入、弹出序列题目描述    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 解题思路    判断一个序列是不是栈的弹出顺序的规律:如果下一个弹出的...

南方有乔木的博客 510

Xiaojie雷达之路---手把手教你从串口获取雷达原始数据(一)---新建工程(开始)

Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章---利用串口获取毫米波雷达中的原始数据,本系列文章将从新建工程到最后原始数据显示到PC上进行逐步介绍,这个系列的文章大约是一个4-5篇左右。本篇文章呢,主要讲的是如何新建一个毫米波雷达的工程。

XiaoJie的博客 5810

lammps教程:实例讲解npt、nvt系综的选择

对于lammps新手来说,系综的选择令人困惑,到底是应该用nvt系综还是npt系综? 我在初学lammps时就被这个问题困扰了很久。如果去问别人,可能会告诉你一个答案:根据模拟需要确定。 其实和没说一样。 到底如何确定系综,确实不是一句两句能够说清楚的,不同的体系、不同的模拟目的要选择不同的系综。 前几天遇到的一个合金的模拟案例,比较有代表性,分享出来供大家参考。 建模方法和之前介绍过的高熵合金建模方法类似,先建立单晶模型,然后使用替换原子的命令获得合金结构。 建模完成后,按照常规,先上nvt系综进行驰豫

lammps_jiayou的博客 9768

大厂算法面试之leetcode精讲17.栈

大厂算法面试之leetcode精讲17.栈 视频讲解(高效学习):点击学习 目录: 1.开篇介绍 2.时间空间复杂度 3.动态规划 4.贪心 5.二分查找 6.深度优先&广度优先 7.双指针 8.滑动窗口 9.位运算 10.递归&分治 11剪枝&回溯 12.堆 13.单调栈 14.排序算法 15.链表 16.set&map 17.栈 18.队列 19.数组 20.字符串 21.树 22.字典树 23.并查集 24.其他类型题 Stack的特点:先进后出(FILO) 使

bemystery的博客 284

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

剑指offer——面试题30:包含min函数的栈

1 #include"iostream" 2 #include"stdio.h" 3 using namespace std; 4 5 const int MAXN=1000; 6 const int INF=10000000; 7 8 template<typename T>class StackWithMin 9 { 10 publi...

weixin_34355881的博客 83

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数据结构:面试题目-专项练习-栈-习题练习

1、下列关于栈叙述正确的是( )。 正确答案: D 你的答案: D (正确) 算法就是程序 设计算法时只需要考虑数据结构的设计 设计算法时只需要考虑结果的可靠性 以上三种说法都不对 解析:A:程序是数据结构+算法,错。 B,C:设计一个算法时,考虑的因素很多。首先要满足算法的五个基本特性:确定性,可行性,有穷性,输入,输出。其次,再从可读性,健壮性,低耦合高效率,低存储等方面进行优化。 2、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( ) 正确答案: C 你的答案: D (错误

世上再无张显宗 3837

【17】面试题22:栈的压入、弹出序列

【1】题目 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5 是某栈的压栈序列,序列4、5、3、2、1 是该压栈序列对应的一个弹出序列,但 4、3、5、1、2 就不可能是该压栈序列的弹出序列。 【2】思路 如果下一个弹出的数字刚好是栈顶数字,那么直接弹出。如果下一个弹出的数字不在栈顶,我们把压栈序列中还没有入栈的数字压入辅助栈,直到把下一个需要弹出的数字压入栈顶为止。如果所有的数字都压入栈了仍然没有找

qq_33612665的博客 223

Days 22栈与队列

程序 = 数据结构 + 算法,栈和队列是开发中最基础、高频使用的受限线性表。后进先出 LIFO,仅栈顶插入、删除先进先出 FIFO,队尾入队、队头出队本文基于 Linux+C 语言实现,包含顺序栈、链式栈、循环队列、链式队列全套代码,配套内存图解、易错点分析,适合期末复习、面试基础复习。表格特性顺序栈链栈循环队列链队列存储连续数组离散链表节点环形数组离散链表容量固定上限无上限固定上限无上限操作复杂度O(1)O(1)O(1)O(1)内存开销仅数据。

Q3365879的博客 180

大模型面试经验汇总:22家大厂面试实录+高频考点解析

摘要:本文分享了作者2025年参加的22家科技公司大模型岗位面试经验,涵盖面试流程、高频考点及行业观察。高频考点包括多头注意力机制、框架并行方式、主流模型细节等。作者指出大模型领域竞争激烈,岗位对技术和工程能力要求高,并提供了备考资料。面试经历显示初创公司更注重多领域能力,而大厂分工更细。文章还总结了行业趋势,如RLHF前景广阔,多数公司仍聚焦语言模型。作者整理了AI大模型学习资料包,为求职者提供参考。

libaiup的博客 1346

两个栈实现一个队列-----队列和栈面试题2

问题 两个栈实一个队列 虽然这种问题在实际开发中压根不会出现,但是解决这个问题可以使我们对栈和队列的理解更上一层楼 思路 定义一个栈为 input,另一个为 output 入队列时,要将 output 中所有元素出栈到 input 中,然后再入栈 input 出队列时,要将 input 中所有元素出栈到 output 中,然后再出栈 output 方法实现 seqs...

Xucc_x的博客 1593

【剑指offer】面试题22:栈的压入弹出序列

题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。

solar一抹阳光的专栏 622

剑指offer面试题22

面试题22:栈的压人、弹出x

ahuang1900的专栏 846
上一篇: H面试(20): 排序总结
下一篇: H面试(23):求子数组最大和
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值