一道百度面试题
来源:互联网 发布:python xml dom 编辑:程序博客网 时间:2024/04/29 17:15
给出一个整型数组num[],对其中的每个元素,输出在它左侧且比它小的最近元素,要求时间复杂度为O(n)。例如int num[]={2,4,1,3},2无左侧最近元素;4左侧最近的是2;1没有;3左侧最近的是1.
分析:创建一个栈,然后将数组中的元素从右至左依次压入栈中。对每个元素,入栈前先检查栈顶元素是否比它大,若是的话,则该元素即为栈顶元素的左侧最近小元素,输出结果,栈顶弹出,再看此时的新栈顶是否还比当前元素大。直到栈顶元素不大于当前元素时,再将该元素压入栈中。
当所有元素均压入栈时,栈中剩下的元素均不存在左侧最近小元素,将其结果输出。
代码如下:
// [10/10/2013 qingezha]// 输出每个元素中,在它左侧且比它小的最近元素void PrintEachMin(int num[], int len){if(!num || len<=0)return ;stack<int> sta;// 对每个元素,进栈前先循环判断栈顶是否比它大,若是则该元素就是栈顶的左侧最近小元素// 此时输出结果后,弹出栈顶元素。最后将该元素压入栈for (int i=len-1; i>=0; --i){while(!sta.empty() && num[i]<sta.top()){printf("The nearest number of %d is %d!\n", sta.top(), num[i]);sta.pop();}sta.push(num[i]);}// 此时栈中的所有元素均不存在左侧最近小元素while(!sta.empty()){printf("%d haven't nearest number!\n", sta.top());sta.pop();}}
- 百度面试题一道
- 一道百度面试题
- 一道百度面试题
- 一道百度面试题
- 一道百度面试题
- 一道百度面试题
- 一道百度面试题
- 一道百度面试题题解
- 一道解读百度面试题
- 忆一道百度面试题
- 百度一道面试题的PHP解答
- 百度校园招聘的一道面试题
- 百度一道面试题引发的思考
- 一道百度最新面试题的实现
- 百度面试题,一天一道慢慢来
- 百度的一道面试题(关于Cache的)
- 百度面试题一道2(著名的蚂蚁问题)
- 【题目36】百度的一道面试题-找到攻击IP
- 2011成都网选最水的几道题
- ORA-01078, LRM-00123错误处理
- ACM STEP 1.2.5 GPA
- ViewController的旋转一个举例
- UVa 127 - "Accordian" Patience
- 一道百度面试题
- 在linux下使用mysql的基础操作(二)
- ACM STEP 1.2.7 Lowest Bit
- 第四章总结(上)
- 【PAT Advanced Level】1004. Counting Leaves (30)
- Linux就是这个范儿之第一次亲密接触(3)
- WEB开发总结(持续更新。。。)
- 14条建议,使你的IT职业生涯更上一层楼
- php学习笔记 1