博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 定义栈结构,实现min函数,获取栈最小元素,要求时间复杂度为O(1)
阅读量:7251 次
发布时间:2019-06-29

本文共 2002 字,大约阅读时间需要 6 分钟。

1 
top = 0;18 foreach($a as $val) {19 $this->push($val);20 }21 }22 23 public function push($i) {24 $node = new Node();25 $node->data = $i;26 27 #此处设置每个节点的min值,设置方法为若栈为空,当前元素data则为当前节点的min28 #若栈非空,则当前元素data与前一个节点的min值比较,取其小者作为当前节点的min29 if ($this->top == 0) {30 $min = $node->data;31 } else {32 $min = $this->data[$this->top - 1]->min < $node->data ? $this->data[$this->top - 1]->min : $node->data;33 }34 35 $node->min = $min;36 $this->data[] = $node;37 $this->top++;38 return $node;39 }40 41 public function pop() {42 $r = $this->data[--$this->top];43 unset($this->data[$this->top]);44 return $r;45 }46 47 public function get_min() {48 return $this->data[$this->top - 1]->min;49 }50 }51 52 $a = array(5, 7, 3, 8, 9, 1, 2);53 $min_stack = new Min_Stack($a);54 echo "Min : {
$min_stack->get_min()}
";55 print_r($min_stack);56 echo "
Pop : {
$min_stack->pop()->data}
";57 print_r($min_stack); 58 ?>

Min : 1 

Min_Stack Object ( [data:Min_Stack:private] => Array ( [0] => Node Object ( [data] => 5 [min] => 5 ) [1] => Node Object ( [data] => 7 [min] => 5 ) [2] => Node Object ( [data] => 3 [min] => 3 ) [3] => Node Object ( [data] => 8 [min] => 3 ) [4] => Node Object ( [data] => 9 [min] => 3 ) [5] => Node Object ( [data] => 1 [min] => 1 ) [6] => Node Object ( [data] => 2 [min] => 1 ) ) [top:Min_Stack:private] => 7 ) 
Pop : 2
Pop : 1
Min : 3 
Min_Stack Object ( [data:Min_Stack:private] => Array ( [0] => Node Object ( [data] => 5 [min] => 5 ) [1] => Node Object ( [data] => 7 [min] => 5 ) [2] => Node Object ( [data] => 3 [min] => 3 ) [3] => Node Object ( [data] => 8 [min] => 3 ) [4] => Node Object ( [data] => 9 [min] => 3 ) ) [top:Min_Stack:private] => 5 )

转载地址:http://gjhbm.baihongyu.com/

你可能感兴趣的文章
Django模板——html转义
查看>>
数理统计总结篇第一章
查看>>
javascript开发模式
查看>>
Docker底层技术
查看>>
明全策:黄金波段上攻1345一线,1.24现货伦敦金分析策略
查看>>
【小松教你手游开发】【unity实用技能】unity ngui wp8上使用动态字体消失或碎片化的问...
查看>>
【小松教你手游开发】【unity实用技能】yiled return null在unity中的作用
查看>>
RAC 12.1
查看>>
跳转控制器用 push 还是 modal,怎么选择?
查看>>
第二周学习总结
查看>>
linux shell基本特性
查看>>
oracle 启动阶段
查看>>
要听 1001 个支付故事,这次你估计不用花钱
查看>>
软件测试人员应该得到实时生产错误的责任吗?
查看>>
.net快速开发平台搭建实例,工作流、代码生成、移动app等
查看>>
Jetty源码学习9-WebSocket
查看>>
积米浏览器下载|积米浏览器免费下载
查看>>
PHPStorm 新手教程
查看>>
我的友情链接
查看>>
网易也这样。
查看>>