一公司的面試題(泛型和數組的問題)

題目:區間合併
算法

  若是用一組書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 

得出答案 !!!!!

  雖然此題並不難 可是它的思想是值得借鑑的 

相關文章
相關標籤/搜索