给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
来源:互联网 发布:java webservice 调用 编辑:程序博客网 时间:2024/05/16 08:35
参考:http://blog.csdn.net/yysdsyl/article/details/5419149
题目:
给定数组Arr[n],对于其中的每个元素Arr[i](0=<i<n),在Arr[0...i-1]中找到元素Arr[k],Arr[k]满足Arr[k]>Arr[i],并且i-k值最小(即最靠近)。
要求O(n)时间内找出Arr中所有元素对应的Arr[k]的位置。
ex,
src[]: 9, 5, 2, 4, 7
dst[]: -1,0, 1, 1, 0
思路:
借助于栈来实现,从后向前遍历数组,while栈顶元素小于当前遍历的数组元素,则更新dst,并pop。
参见下面代码
/*题目:给定数组Arr[n],对于其中的每个元素Arr[i](0=<i<n),在Arr[0...i-1]中找到元素Arr[k],Arr[k]满足Arr[k]>Arr[i],并且i-k值最小(即最靠近)。要求O(n)时间内找出Arr中所有元素对应的Arr[k]的位置。ex,src[]: 9, 5, 2, 4, 7dst[]: -1,0, 1, 1, 0思路:借助于栈来实现,从后向前遍历数组,while栈顶元素小于当前遍历的数组元素,则更新dst,并pop。*/#include <iostream>#include <stack>using namespace std;void sulotion(const int* src,int* dst,const int nSize){stack<int> temp;for ( int i=nSize-1 ; i>=0 ; ){if ( !temp.empty() && src[i]>src[temp.top()] ){dst[temp.top()]=i;temp.pop();} else {temp.push(i);--i;}}while (!temp.empty()){dst[temp.top()]=-1;temp.pop();}}int main(){int src[] = {2,9, 5, 2, 4, 7}; int dst[6];sulotion(src,dst,6);for ( int i=0 ; i<6 ; ++i ){cout<<dst[i]<<" ";}return 0;}
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 面试题精选(85):给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 主元素问题(判断数组是否出现主元素,O(n)时间内找出主元素,主元素出现次数)
- 在O(n)时间内找出最小的k个元素
- 编写程序,在O(n)时间内从数组x[0..n-1]中找出第k个最小的元素?
- 找出元素 item 在给定数组 arr 中的位置
- 计算给定数组 arr 中所有元素的总和
- 从有n个元素的数组中找出出现次数大于n/3次的元素
- 给定一个整数数组,1≤a [i]≤n(n =数组的大小),一些元素出现两次,其他出现一次 查找在该数组中出现两次的所有元素
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 给定一个整型数组,求数组元素大于等于所有元素平均值的元素个数
- Leetcode238. O(n)并且不能使用除法计算数组每个元素除了它本身的所有元素的积
- 算法之找出数组中出现次数大于n/m的元素
- 找出数组中重复的元素,或者丢失的元素,前提,数组长度N,元素为1到N
- N个元素的数组中找出出现多于N/2次的数(主元素)
- 反射机制
- 基于tabbarController中的每个tabbar都是UINavigation的涉及到的登陆、注销情况
- 仅仅用来纪念一下自己写的第二个ruby脚本 。ruby还是很好玩的
- 费用和损失的区别
- Mac下MySQL可视化管理工具
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 通往天堂的地狱
- android launcher源码分析
- H264实时编码及NALU,RTP传输(续)(ZZ)
- 引入System.Configuration命名空间后仍无法打出ConfigurationManager错误
- group by 的理解
- yum和apt-get用法及区别 (转)
- gdb调试的layout使用
- eclipse Maven配置以及使用方法