2018腾讯内部转岗面试题3——找出数组中比左边大比右边的小的元素
题目:
以时间复杂度 O(n) 从长度为 n 的数组中找出同时满足下面两个条件的所有元素:
(1)该元素比放在它前面的所有元素都大;
(2)该元素比放在它后面的所有元素都小。
分析:
面试官给的上面冗余的描述,其实一句话即可说明,即 以时间复杂度 O(n) 从长度为n的数组中找出所有比左边大比右边的小的元素。
一开始求出所有元素右边最小数,存放到一个数组 rightMin 中,然后从左往右判断当前元素是否大于左边所有元素,如果是则和其右边最小数(存放于最小数组 rightMin)比较,如果小于,则找到了满足条件的元素。
注意: 左右两边第一个数不满足条件。
实现:
#include <iostream>
using namespace std;void printPivotElements(int data[], int len) {// 从右往左,寻找每个位置及其之后的最小数int* rightMin = new int[len];int rMin = data[len - 1];for (int i = len - 1; i >= 0; --i) {if (data[i]<rMin) rMin = data[i];rightMin[i] = rMin;}// 从左往右,寻找比左边大且比右边小的数int max = data[0];for (int i = 1; i < len - 1; ++i) {if (data[i] > max) {max = data[i];if (data[i] < rightMin[i+1]) cout << data[i] << endl;}}
}int main() {int iTestArray[] = { 1,8,6,9,10,15,12,20 };printPivotElements(iTestArray, sizeof(iTestArray) / sizeof(iTestArray[0]));
}
输出:
9
10
2018腾讯内部转岗面试题3——找出数组中比左边大比右边的小的元素相关推荐
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- 图解面试题:找出数组中重复的数字?
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
- 2018 腾讯内部转岗面试题 1 —— 不用 sizeof 判断操作系统是 32 还是 64 位
文章目录 前言 题目 解法一:最大值溢出 解法二:__WORDSIZE 解法三:指针变量位宽 参考文献 前言 2018 上半年折腾了一回,想换个后台开发岗尝试锻炼一下自己,面了三个部门,将有关有意思的 ...
- 2018腾讯内部转岗面试题2——打印A-Z 26个字母的所有子集
题目: 有一个集合由A-Z这26个字母组成,打印这个集合的所有子集,每个子集一行,使用C/C++实现,不要使用递归. 分析: 该题可参见著作<编程之法:面试和算法心得>.26个大写字母,乍 ...
- 微策略2011校园招聘笔试题(找出数组中两个只出现一次的数字)
1.8*8的棋盘上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0),一个人初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下 ...
- 数据结构 2018统考题【找出数组中未出现的最小正整数】
王道论坛课本
- 121. 买卖股票的最佳时机_面试题63. 股票的最大利润_[找出数组中一个元素和它后面最大的元素的差值]
描述 Say you have an array for which the ith element is the price of a given stock on day i. If you we ...
- 【408计算机考研】|【2018统考真题-41】| 给定一个含 n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数
目录 一.题目 二.解答 三.测试数据 一.题目 给定一个含 n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算 法,找出数组中未出现的最小正整数.例如,数组{-5, 3, 2, 3}中未 ...
- 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
最新文章
- 干货|10 张 GIF 动图让你弄懂基础算法必备概念
- 计算机应用基础试题事业单位,机关事业单位技术工人计算机应用基础知识复习题...
- Numpy 生成随机数和乱序
- the NTP socket is in use, exiting
- java定义private_java9开始——接口中可以定义private私有方法
- OpenShift 4 之Istio-Tutorial (6) 服务恢复能力(重试、超时、断路器)
- X86汇编语言从实模式到保护模式10:进入保护模式
- Hibernate中createCriteria即QBC查询的详细用法
- layui登录源码_基于springboot+thymeleaf+mysql+layui实现的论坛系统
- 机器学习04:利用朴素贝叶斯分类器判别网络评论的情绪好坏(航空公司数据集)
- 微软成为雅虎财经2021年年度最佳公司
- 公共数据库介绍~OECD经合组织数据库
- 居然有人能把5G解释的这么清楚
- OTA前装搭载率逼近50%,哪些供应商正在领跑细分赛道
- 【java】高尔顿瓶
- CentOS 7 安装好后,无法使用小键盘的解决办法
- 【渝粤题库】陕西师范大学164103 网络贸易 作业 (高起专)
- 双壳层膦酰基修饰二氧化硅磁性微球/氮氧自由基接枝/表面KH-550改性二氧化硅微球的研究
- 什么是百度信息流广告?
- 2022年华为杯中国研究生数学建模竞赛D题思路