题目:区间合并
算法
若是用一组书Pair<Float,Float>(a,b)表示一个闭合区间,其中a,b表示X轴的两个点,a,b间没有大小关系。输入一个方法处理一批数据并合并区间,并将合并的结果输出,好比(3,8),(5,9)合并为(3,9);
express
下面为题目的类格式:this
public class Pair<F,S> {spa
public final F first;排序
public final S second;get
public Pair(F first,S second){it
this.first = first;io
this.second = second;class
}List
Pair<Float,Float>[] merge(Pair<Float,Float>[] pairs){
//这里实现算法(见下:算法)
}
}
不知道你们看到这里内心是什么感受?无从下手仍是豁然开阔,固然 对于我这种刚毕业的菜鸟来讲 仍是比较可贵 下面是算法
List<Float> list = new ArrayList<Float>(); //存放全部的数字 用于排序 取区间(min-max)
Pair<Float,Float>[] pa = new Pair[1];
//这里是算法
for (int i = 0; i < pairs.length; i++) {
Pair<Float,Float> each = pairs[i];
Float first = each.first;
Float second = each.second;
list.add(first);
list.add(second);
}
//排序list
Collections.sort(list); //这里我作了一个简单的方法 不知道读者是否还有好的办法?
int size = list.size();
pa[0] = new Pair<Float,Float>(list.get(0),list.get(size-1));
return pa;
其实到这里 大体的问题就能解决了 可是 请往下看:
这是main方法中的内容
Map<String,String> map[] = new HashMap<String,String>()[10]; 报错:The type of the expression must be an array type but it resolved to HashMap<String,String>
Map map[] = new HashMap[10]; 正常使用 以前没有作过相似的
main方法调用“
Pair pairs1 = new Pair(5f, 8f);
Pair pairs2 = new Pair(9f, 5f);
Pair pairs3 = new Pair(12f, 30f);
Pair pairs4 = new Pair(12f, 300f);
Pair pairs[] = {pairs1,pairs2,pairs3,pairs3,pairs4};
Pair pa[] = pairs1.merge(pairs);
System.out.println(pa[0].first);
System.out.println(pa[0].second);
输出 :5.0 300.0
得出答案 !!!!!
虽然此题并不难 可是它的思想是值得借鉴的