T2. 小苯的数组查询 (20分) - 饿了么测试岗编程题
题目描述
小苯有一个长度为n的数组α。它定义了一个函数 。(|表示位运算中的按位或运算)
现在他有q次询问,每次询问他都会给出一个区间[l,r],以及一个正整数k,他想知道在区间中是否存在一个右端点r'
(),使得,请你帮帮他处理每次询问吧。
输入描述
输入包含若干行。
第一行两个正整数n,q(),分别表示数组α的长度和小苯的询问次数。
第二行n个正整数, 表示数组α的每个元素。
接下来q行,每行三个正整数 ,
输出描述
输出包含q行,每行一个整数,如果存在符合条件的,请输出最小的一个,如果不存在输出一个-1。
输入
5 5
3 2 3 3 6
1 2 3
1 5 7
1 4 7
2 2 2
2 3 7
输出
1
5
-1
2
-1
题解
这道题目属于数组处理和位运算的问题。
解题思路如下:
- 读取输入的数组长度
n
和询问次数q
,以及数组元素。- 对每个询问,读取区间
[l, r]
和目标值k
。- 从左端点 开始遍历数组,使用按位或运算来计算区间 中
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
🔥笔试编程真题宝典💯 文章被收录于专栏
📕分享大厂机试真题深度剖析核心考点,助你速通面试。