<?php
/**
* 使用一个辅助栈,O(1)复杂度求出栈中的最小数
* @hack 类中通过数组来模拟堆栈
*
* @author laiwenhui
*/
class strack{
/**
* 数据栈,存储栈数据;
*
* @var array
*/
private $_arrData = array();
/**
* 辅助栈,存储数据组栈中每层的最下值信息;
*
* @var array
*/
private $_arrMin = array();
/**
* 栈顶所在单元
*
* @var int
*/
private $_top=-1;
/**
* 出栈
* @return bool|int
*/
public function pop(){
if ($this->_top === -1){
return false;
}
array_pop($this->_arrMin);
$this->_top--;
return array_pop($this->_arrData);
}
/**
* 入栈
* @param int $element
* @return bool
*/
public function push($element){
$element = intval($element);
//如果栈为空,直接入栈
if ($this->_top === -1){
array_push($this->_arrData, $element);
array_push($this->_arrMin, $element);
$this->_top++;
return true;
}
//不为空,判断入栈的值是否比最小栈栈顶小
$min = $this->_arrMin[$this->_top];
//比较求出最小值
$currentMin = $element < $min ? $element : $min;
//当前栈中最小值入栈
array_push($this->_arrMin, $currentMin);
//数据入栈
array_push($this->_arrData, $element);
$this->_top++;
return true;
}
/**
* 求当前栈空间的最小值
* @return bool|int
*/
public function min(){
if ($this->_top === -1){
return false;
}
return $this->_arrMin[$this->_top];
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有