面试题精选(85):给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
来源:互联网 发布:电子文档制作软件 编辑:程序博客网 时间:2024/05/04 20:44
题目:
给定数组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。
参见下面代码
代码:
- 面试题精选(85):给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- 面试题精选(86):O(lgn)时间内找出有序数组中某个元素出现的次数
- 面试题精选(79):取值为【1,n-1】含n个元素的整数数组至少存在一个重复数,O(n)时间内找出其中任意一个重复数
- 主元素问题(判断数组是否出现主元素,O(n)时间内找出主元素,主元素出现次数)
- 在O(n)时间内找出最小的k个元素
- 编写程序,在O(n)时间内从数组x[0..n-1]中找出第k个最小的元素?
- 找出元素 item 在给定数组 arr 中的位置
- 计算给定数组 arr 中所有元素的总和
- 百度面试题:输出每个元素,在它左侧且比它小的最近元素
- 给定一个整数数组,1≤a [i]≤n(n =数组的大小),一些元素出现两次,其他出现一次 查找在该数组中出现两次的所有元素
- 从有n个元素的数组中找出出现次数大于n/3次的元素
- 程序员面试题精选(36):找出数组中唯一的重复元素
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 给定一个整型数组,求数组元素大于等于所有元素平均值的元素个数
- 30个3D风格网站设计
- 查询同一表内多字段同时重复记录的SQL语句
- 将DXP设置为中文版
- Pi to one MILLION decimal places
- poj-1035-Spell checker
- 面试题精选(85):给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
- VC 控件DateTimePicker使用方法
- framebuffer 编程
- B/S架构 C/S架构 SOA架构
- 如何绘制思维导图
- 对应的网站速度优化方法略谈
- java中调用储存过程
- 译文:设置HTTP文件下载四要诀
- [转载]WebBrowser控件使用详解