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

LeetCode 面试题 03.03. 堆盘子

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

  堆盘子。设想有一堆盘子,堆太高可能会倒下来。因此,在现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子。请实现数据结构 SetOfStacks,模拟这种行为。SetOfStacks 应该由多个栈组成,并且在前一个栈填满时新建一个栈。此外,SetOfStacks.push()SetOfStacks.pop() 应该与普通栈的操作方法相同(也就是说,pop()返回的值,应该跟只有一个栈时的情况一样)。 进阶:实现一个 popAt(int index) 方法,根据指定的子栈,执行pop操作。

  当某个栈为空时,应当删除该栈。当栈中没有元素或不存在该栈时,poppopAt 应返回 -1.

  点击此处跳转题目。

示例1:

输入:
[“StackOfPlates”, “push”, “push”, “popAt”, “pop”, “pop”]
[[1], [1], [2], [1], [], []]
输出:
[null, null, null, 2, 1, -1]

示例2:

输入:
[“StackOfPlates”, “push”, “push”, “push”, “popAt”, “popAt”, “popAt”]
[[2], [1], [2], [3], [0], [0], [0]]
输出:
[null, null, null, null, 2, 1, 3]

二、C# 题解

  这题不难,但是很繁琐。尤其是题目没有说明清楚,不仅不给出数据规模,而且还会出现栈的大小为 0 的情况,真是绷不住了。当中间栈有元素弹出时,后面的元素并不前移,这点题目也没说,也是挺离谱的。

public class StackOfPlates {private class Node {public int val = 0; // 若作为头结点,则表示该链表串联的元素个数public Node next = null;public Node(int v, Node n) {val = v;next = n;}}private Node[] stack;                   // 头结点数组,每个结点连接一个链表,表示一个栈private int MAX_CAP, p = -1;            // MAX_CAP 表示每个栈最多有几个盘子,p 用于指向当前栈private static int MAX_STACK_NUM = 999; // 栈的最大个数public StackOfPlates(int cap) {MAX_CAP = cap;stack = new Node[MAX_STACK_NUM];}public void Push(int val) {// 前置判断条件:不给放盘子或者栈达到最大个数if (MAX_CAP == 0 || p == MAX_STACK_NUM - 1 && stack[p].val == MAX_CAP) return; // 如果 p 为 -1 或当前栈满,则激活新栈if (p == -1 || stack[p].val == MAX_CAP) stack[++p] = new Node(0, null); // 压入元素stack[p].next = new Node(val, stack[p].next);stack[p].val++;}public int Pop() {// 前置判断条件:不给放盘子或者没有栈if (MAX_CAP == 0 || p == -1) return -1; // 弹出元素int result = stack[p].next.val;stack[p].next = stack[p].next.next;stack[p].val--;// 如果当前栈满,则指针前移if (stack[p].val == 0) stack[p--] = null;return result;}public int PopAt(int index) {// 前置判断条件:不给放盘子或没有栈if (MAX_CAP == 0 || stack[index] == null) return -1;// 弹出元素int result = stack[index].next.val;stack[index].next = stack[index].next.next;stack[index].val--;// 移除后栈为空,则将后面的栈前移if (stack[index].val == 0) {for (int i = index; i < p; i++) {stack[i].next = stack[i + 1].next;stack[i].val = stack[i + 1].val;stack[i + 1].next = null;}stack[p--] = null;}return result;}
}/*** Your StackOfPlates object will be instantiated and called as such:* StackOfPlates obj = new StackOfPlates(cap);* obj.Push(val);* int param_2 = obj.Pop();* int param_3 = obj.PopAt(index);*/
  • 时间复杂度: O ( 1 ) O(1) O(1)
  • 空间复杂度: O ( n ) O(n) O(n)

相关文章:

LeetCode 面试题 03.03. 堆盘子

文章目录 一、题目二、C# 题解 一、题目 堆盘子。设想有一堆盘子&#xff0c;堆太高可能会倒下来。因此&#xff0c;在现实生活中&#xff0c;盘子堆到一定高度时&#xff0c;我们就会另外堆一堆盘子。请实现数据结构 SetOfStacks&#xff0c;模拟这种行为。SetOfStacks 应该由…...

Python-函数进阶

函数的多返回值 按照返回值的顺序&#xff0c; 写对应顺序的多个变量接受即可&#xff0c; 变量之间用逗号隔开&#xff0c;支持不同类型的数据return def test_return():return 1, 2, 3x, y, z test_return()print(x) print(y) print(z)函数参数种类 使用方式上的不同&am…...

实操Hadoop大数据高可用集群搭建(hadoop3.1.3+zookeeper3.5.7+hbase3.1.3+kafka2.12)

前言 纯实操&#xff0c;无理论&#xff0c;本文是给公司搭建测试环境时记录的&#xff0c;已经按照这一套搭了四五遍大数据集群了&#xff0c;目前使用还未发现问题。 有问题麻烦指出&#xff0c;万分感谢&#xff01; PS&#xff1a;Centos7.9、Rocky9.1可用 集群配置 iph…...

如何在 Ubuntu 上安装和使用 Nginx?

ginx&#xff08;发音为“engine-x”&#xff09;是一种流行的 Web 服务器软件&#xff0c;以其高性能和可靠性而闻名。它是许多流行网站使用的开源软件&#xff0c;包括 Netflix、GitHub 和 WordPress。Nginx 可以用作 Web 服务器、负载均衡器、反向代理和 HTTP 缓存等。 它以…...

seatunnel win idea 本地调试

调试FakeSource&#xff0c;LocalFile # Set the basic configuration of the task to be performed env {execution.parallelism 1job.mode "BATCH" }# Create a source to connect to Mongodb source {# This is a example source plugin **only for test and d…...

链路追踪Skywalking快速入门

目录 1 Skywalking概述1.1 微服务系统监控三要素1.2 什么是链路追踪1.2.1 链路追踪1.2.2 OpenTracing1、数据模型&#xff1a;2、核心接口语义 1.3 常见APM系统1.4 Skywalking介绍1、SkyWalking 核心功能&#xff1a;2、SkyWalking 特点&#xff1a;3、Skywalking架构图&#x…...

全开源影视APP源码带后台 苍穹影视APP源码 免受权带安装教程

苍穹影视 V20 全新后台七彩视界免受权开源源码此版本为天穹公益版开源无解密安装教程 全新后台很是都雅,源码全开源无加密。 PC 端对接教程&#xff1a; 建议在浮图下操作 正常安装前后端 然后安装米酷 cms 根据教程安装即可 米酷 cms 对接部门已被我改动&#xff0c;只要在安装…...

Qt+C++自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本

程序示例精选 QtC自建网页浏览器-Chrome blink最新内核基础上搭建-改进版本 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC自建网页浏览器-Chrome blink最新内核基础上搭建-改进版…...

这场科技巨变,有生之年有希望

见到一文&#xff0c;遂分享欲爆棚&#xff0c;总结如下。 具有人类水平的人工智能大约什么时候可以出现&#xff1f; 人类水平的人工智能&#xff0c;指的是&#xff0c;不需要借助人类&#xff0c;机器能够比人类更好地完成每项任务。 针对这个问题&#xff0c;有家机构在201…...

zemax优化功能

1、三种优化方法 zemax的三种优化方法中&#xff0c;局部优化会找到局部的极小值点&#xff0c;全局优化会找到整体的最小值点。 锤形优化适用于先用全局优化找到大概值后&#xff0c;进一步完善光学系统 对于评价函数单调或者局部最小值就是全局最小值的情况&#xff0c;使…...

Centos8关闭IPV6

编辑 /etc/sysctl.conf 文件。 vi /etc/sysctl.conf 放置以下条目以禁用所有适配器的 IPv6。 net.ipv6.conf.all.disable_ipv6 1 net.ipv6.conf.default.disable_ipv6 1 您可以使用以下条目为特定网络接口禁用 IPv6。 &#xff08;假设网卡名称是enp0s3&#xff09;。 n…...

华为OD七日集训第4期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第4期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、数据结构第2天、滑动窗口第3天、贪心算法第4天、二分查找第5天、分治递归第6天、深度优先搜索dfs算法第7天、宽度优选算法&#xff0c;回溯法 六…...

flutter 抓包工具charles

本来的代码是忽略证书 ///忽略https证书校验&#xff0c;也就是能请求https的地址了(_dio?.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate (HttpClient client) {client.badCertificateCallback (X509Certificate cert, String host, int port) > tr…...

——二叉树

二叉树种类 二叉树有两种主要的形式&#xff1a;满二叉树和完全二叉树。 满二叉树 如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 完全二叉树 在完全二叉树中&#xff0c;除了最底层节点可能没…...

【linux命令讲解大全】103.Linux目录堆栈命令 dirs 的使用方法和选项详解

文章目录 dirs概要主要用途选项参数返回值例子注意 从零学 python dirs 显示目录堆栈。 概要 dirs [-clpv] [N] [-N] 主要用途 显示目录堆栈。 清空目录堆栈。 选项 -c&#xff1a;清空目录堆栈。-l&#xff1a;堆栈内以~开头的目录在显示时展开。-p&#xff1a;将目录堆…...

vue3项目应用font awesome6

element-plus框架的图标icon种类较少&#xff0c;一般无法涵盖所有业务情况 这时候引入font awesome6免费版&#xff0c;图标库非常丰富&#xff0c;一般可以满足所有业务场景 官网&#xff1a;https://fa6.dashgame.com/Font Awesome 6&#xff0c;一套始终绝佳的图标字体库…...

【JavaScript】JS语法入门到实战

文章目录 一、初识JavaScript1. 什么是JavaScript&#xff1f;2. JavaScript 和 HTML 和 CSS 之间的关系3. JavaScript的运行过程4. JavaScript的组成 二、JavaScript的书写形式三、变量1. 输入输出2. 变量的使用3. 数据类型 四、运算符五、分支和循环语句1. 分支语句2. 循环语…...

【Linux】工具Gdb调试轻度使用(C++)

目录 一、Gdb背景 二、Gdb基本命令 【2.1】list | l 【2.2】break | b 【2.5】delete | d 【2.6】disable 【2.7】enable 【2.3】info 【2.4】info locals 【2.6】run | r 【2.7】next | n 【2.8】step | s 【2.9】 continue | c 【2.10】bt 【2.11】finish 三…...

linux xhost命令

xhost命令 XHOST 用于管理允许访问系统上 X Server 的主机和用户列表&#xff0c;这些主机和用户都可以从其他主机和同一系统上的其他用户访问。 通常&#xff0c;远程访问将被禁用&#xff0c;因为它会带来安全风险。 但是&#xff0c;如果我们需要在远程计算机上运行 GUI &…...

linux在线源码阅读网站

下面的网站可以在线阅读linux源码&#xff0c;提供了类似github上分析工具&#xff0c;自动具备符号关联的作用&#xff0c;可以方便的供用户分析代码。除了可以分析linux源码外&#xff0c;该网站还可以分析一些其它源码&#xff0c;例如qt等 这个网站有许多功能&#xff0c;…...

如何快速清理电脑中的重复图片:AntiDupl.NET终极指南

如何快速清理电脑中的重复图片&#xff1a;AntiDupl.NET终极指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾因电脑中堆积如山的重复图片而烦恼&#xff1…...

2026国产SCARA机器人品牌深度横评:高精度、零件分拣多维度对比

SCARA机器人作为工业自动化领域的重要装备&#xff0c;凭借其高速、高精度、易集成等优势&#xff0c;广泛应用于3C电子、医疗器械、新能源等精密装配场景。随着国产机器人品牌的崛起&#xff0c;市场竞争格局正在发生深刻变化。本文基于公开技术参数、市场应用数据及行业调研&…...

告别调试助手:在Linux终端用minicom高效收发AT指令

1. 为什么选择minicom替代图形化串口工具 作为一名在嵌入式领域摸爬滚打多年的开发者&#xff0c;我经历过各种串口调试工具的折磨。从早期的Windows超级终端到现在的各种图形化串口助手&#xff0c;最终发现Linux下的minicom才是真正的高效利器。你可能要问&#xff1a;为什么…...

3分钟让你的Windows桌面焕然一新:NoFences开源分区神器

3分钟让你的Windows桌面焕然一新&#xff1a;NoFences开源分区神器 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天都要在杂乱无章的桌面图标中寻找需要的文件&…...

群晖DSM 7.2.2视频站恢复指南:三步搞定Video Station完整功能

群晖DSM 7.2.2视频站恢复指南&#xff1a;三步搞定Video Station完整功能 【免费下载链接】Video_Station_for_DSM_722 Script to install Video Station in DSM 7.2.2 and DSM 7.3 项目地址: https://gitcode.com/gh_mirrors/vi/Video_Station_for_DSM_722 还在为升级到…...

Halo Cursor:轻量级框架无关的动画光标库设计与实践

1. 项目概述&#xff1a;一个轻量、无框架绑定的动画光标库最近在重构一个前端项目&#xff0c;想给用户界面增加一点微妙的动态反馈&#xff0c;提升交互的精致感。我第一个想到的就是自定义光标效果。市面上这类库不少&#xff0c;但要么体积臃肿&#xff0c;要么和特定框架&…...

D3KeyHelper:5个技巧让暗黑破坏神3操作效率翻倍的智能宏工具完全指南

D3KeyHelper&#xff1a;5个技巧让暗黑破坏神3操作效率翻倍的智能宏工具完全指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 你是否曾在《暗黑破…...

PS图片文字修改教程 简单几步完美替换文字内容

日常设计、办公、自媒体创作中&#xff0c;我们经常会遇到需要修改图片文字的场景&#xff1a;海报文案调整、截图信息替换、照片文字修正等。很多人苦于改完文字后模糊留痕、背景破损&#xff0c;要么耗时半天还达不到理想效果。今天就给大家分享两种PS改图片文字的实用方法&a…...

手把手教你用OPA4377搭建一个精密电流检测电路(附AD原理图/PCB)

精密电流检测电路设计实战&#xff1a;基于OPA4377的完整解决方案 在工业自动化、新能源系统和医疗设备等领域&#xff0c;精密电流检测一直是电路设计中的关键挑战。传统方案往往面临噪声干扰、非线性失真和温度漂移等问题&#xff0c;而现代CMOS运算放大器如OPA4377为解决这些…...

企业如何通过Taotoken实现API Key的统一管理与审计

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业如何通过Taotoken实现API Key的统一管理与审计 在将大模型能力集成到企业业务流程的过程中&#xff0c;一个常见的挑战是如何安…...