一公司的面试题(泛型和数组的问题)

题目:区间合并
算法

  若是用一组书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 

得出答案 !!!!!

  虽然此题并不难 可是它的思想是值得借鉴的 

相关文章
相关标签/搜索