题目:区间最小数
2015-09-01 23:54
429 查看
给定一个整数数组(下标由 0 到 n-1,其中 n 表示数组的规模),以及一个查询列表。每一个查询列表有两个整数 [start, end]。 对于每个查询,计算出数组中从下标 start 到 end 之间的数的最小值,并返回在结果列表中。
您在真实的面试中是否遇到过这个题?
Yes
样例
对于数组 [1,2,7,8,5], 查询 [(1,2),(0,4),(2,4)],返回 [2,1,5]
注意
在做此题前,建议先完成以下三道题 线段树的构造, 线段树的查询 及 线段树的修改。
挑战
每次查询在O(logN)的时间内完成
标签 Expand
相关题目 Expand
解题思路:
常规解法,暴力搜索,没有达到O(logN)的时间复杂度。
给定一个整数数组(下标由 0 到 n-1,其中 n 表示数组的规模),以及一个查询列表。每一个查询列表有两个整数 [start, end]。 对于每个查询,计算出数组中从下标 start 到 end 之间的数的最小值,并返回在结果列表中。
您在真实的面试中是否遇到过这个题?
Yes
样例
对于数组 [1,2,7,8,5], 查询 [(1,2),(0,4),(2,4)],返回 [2,1,5]
注意
在做此题前,建议先完成以下三道题 线段树的构造, 线段树的查询 及 线段树的修改。
挑战
每次查询在O(logN)的时间内完成
标签 Expand
相关题目 Expand
解题思路:
常规解法,暴力搜索,没有达到O(logN)的时间复杂度。
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */ public class Solution { /** *@param A, queries: Given an integer array and an query list *@return: The result list */ public ArrayList<Integer> intervalMinNumber(int[] A, ArrayList<Interval> queries) { // write your code here ArrayList<Integer> res = new ArrayList<>(); if(A.length==0||null==A) return res; for(Interval query:queries){ int tmp = searchMin(A, query.start, query.end); res.add(tmp); } return res; } public int searchMin(int[] A,int s,int e){ int min = Integer.MAX_VALUE; for(int i=s;i<=e;i++){ if(A[i]<min){ min = A[i]; } } return min; } }
相关文章推荐
- C语言基本排序总结
- 【CCF】窗口
- HI3516C+OV2710 38mm单板
- 设计模式23:Visitor 访问者模式(行为型模式)
- 题目:加油站
- Linux命令备忘实例(2)——变量
- 设计模式22:Strategy 策略模式(行为型模式)
- 保存一个信息到person中
- Leetcode Word Break
- FrameLayout试验总结
- 常用排序总结
- HDU1003Max Sum(original) HDU1024Max Sum Plus Plus(upgrading)
- [LeetCode#50] Pow(x, n)
- 设计模式21:State 状态模式(行为型模式)
- lua面向对象编程
- hdu4122 Alice's mooncake shop(单调队列)
- LeetCode--------------Ugly Number
- iOS程序启动原理
- 设计模式20:Memento 备忘录模式(行为型模式)
- Python3中使用零拷贝技术来提高网络文件传输时的系统吞吐量