題目:區間合併
算法
若是用一組書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
得出答案 !!!!!
雖然此題並不難 可是它的思想是值得借鑑的