当前有N个数组存放时间数据,N个数组存放当前时刻值,各数组长度不尽相同,但第i个存放时间的数组跟第i个存放值的数组的长度是一致的,如何合并这N个存放时间的数组,并且去掉重复时间点,对应的N个存放值的数组也合并成一个,重复时间点上,取对应值的最大值,最后得到没有时间重复的一个时间数组,和组合更新过的一个存放值的数组。
例如:
目前:
time1[] = {1,2,3,5}
value1[] ={10,20,30,20}time2[] = {2,4,5}
value2[] ={15,30,15};
则合并后的结果为
time[] = {1,2,3,4,5}
value[] = {10,20,30,30,20}
谢谢各位,N最多为8个。

解决方案 »

  1.   

    定义一个新的数组time[]、value[]
    先把time1,value1数组复制到time和value数组
    然后依次考虑timek (2<=k<=N)数组,如下:
      for (i=0;i<timek.length();i++)
       如果timek[i]在time[]中已经存在,其序列为j,比较valuek[i]与value[j]的大小,更新value[j]
       如果不存在,则将timek[i]插入到time[]中,将valuek[i]插入到value中循环结束时,所有的数组都插入到time[]和value[]中,完成合并
      

  2.   

    Map m = new TreeMap();
    for(int k=0; k < 8; k++ ) {
      for(int i = 0; i < time[k].length; ++i) {
         String cur = (String)m.get(time[k][i]);
    try{ 
        if(cur != null && Integer.parseInt(cur) > value[k][i])
             continue;  
    }catch(Exception e){e......}
         m.put(time[k][i],""+value[k][i]);
      }
    }