描述:
给定一个整数数组(下标由 0 到 n-1,其中 n 表示数组的规模),以及一个查询列表。每一个查询列表有两个整数 [start, end]
。 对于每个查询,计算出数组中从下标 start 到 end 之间的数的最小值,并返回在结果列表中。
样例:
对于数组 [1,2,7,8,5]
, 查询 [(1,2),(0,4),(2,4)]
,返回 [2,1,5]
思路:
一个区间一个区间的查找,居然没有超时
/**
* 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> result = new ArrayList<Integer>();
if(A == null || queries == null){
return result;
}
for(int i = 0;i<queries.size();i++){
int start = Math.max(queries.get(i).start , 0);
int end = queries.get(i).end;
int min = Integer.MAX_VALUE;
for(int j = start;j<=end;j++){
min = Math.min(min , A[j]);
}
result.add(min);
}
return result;
}
}