设计包含min函数的栈

举报
香菜聊游戏 发表于 2021/07/15 03:20:54 2021/07/15
【摘要】 2.设计包含min函数的栈。 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。 要求函数min、push以及pop的时间复杂度都是O(1)。 思路:利用辅助栈存储当前栈输入顺序的递减序列 看下图: using System;using System.Collections.Generic;using System.Linq;using ...

2.设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。

思路:利用辅助栈存储当前栈输入顺序的递减序列

看下图:



  
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace program
  6. {
  7. class Program
  8. {
  9. int[] stack = new int[1000];
  10. int[] minstack= new int[1000];
  11. int pos=-1;
  12. int minpos=-1;
  13. void push(int n)
  14. {
  15. if (pos == -1)
  16. {
  17. minstack[++minpos] = n;
  18. stack[++pos] = n;
  19. }
  20. else
  21. {
  22. if (n < =minstack[minpos])
  23. {
  24. minstack[++minpos] = n;
  25. stack[++pos] = n;
  26. }
  27. else
  28. {
  29. //minstack[minpos + 1] = minstack[minpos];
  30. //minpos = minpos + 1;
  31. stack[++pos] = n;
  32. }
  33. }
  34. // pos =pos+1;
  35. }
  36. void pop()
  37. {
  38. Console.Write(stack[pos]);
  39. if (stack[pos] <= minstack[minpos])
  40. {
  41. minpos --;
  42. }
  43. pos--;
  44. }
  45. void min()
  46. {
  47. if (minpos == -1)
  48. {
  49. minpos = 0;
  50. Console.WriteLine(" 已经没有了哦");
  51. return;
  52. }
  53. else
  54. Console.WriteLine(" 当前最小值是: "+minstack[minpos]);
  55. }
  56. static void Main(string[] args)
  57. {
  58. Program p = new Program();
  59. int n;
  60. while ((n=Convert.ToInt32(Console.ReadLine()))!=0)
  61. {
  62. p.push(n);
  63. }
  64. while (p.pos!=-1)
  65. {
  66. p.pop();
  67. p.min();
  68. }
  69. Console.ReadLine();
  70. }
  71. }
  72. }


文章来源: gamwatcher.blog.csdn.net,作者:香菜聊游戏,版权归原作者所有,如需转载,请联系作者。

原文链接:gamwatcher.blog.csdn.net/article/details/7040278

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。