当前位置: 代码迷 >> Java Web开发 >> 求 合并数组中重复元素 java 算法解决方案
  详细解决方案

求 合并数组中重复元素 java 算法解决方案

热度:5233   发布时间:2013-02-25 21:22:19.0
求 合并数组中重复元素 java 算法
有一个数组
oldArray = [1,2,1,3,3,2,9,8,9] 

要求 把所有1 2,3 9 这些重复加起来变成如下
newoldArray = [2,4,6,18,8] 

数组的长度是随机的。

有什么好的 效率比较高的算法吗?

------解决方案--------------------------------------------------------
先排下序,然后判断相邻的是否相等,去掉重复的数。
------解决方案--------------------------------------------------------
探讨

先排下序,然后判断相邻的是否相等,去掉重复的数。

------解决方案--------------------------------------------------------
Java code
import java.util.Collection;import java.util.HashMap;import java.util.Map;public class Test20 {    public static void main(String[] args) {        int[] old = {1,2,1,3,3,2,9,8,9,};        Map<Integer, Integer> map = new HashMap<Integer, Integer>();        for(int i=0; i<old.length; i++){            if(map.containsKey(old[i])){                map.put(old[i], map.get(old[i])+old[i]);            }else{                map.put(old[i], old[i]);            }        }        Collection<Integer> coll = map.values();        Integer[] newInt = new Integer[map.size()];        coll.toArray(newInt);        for(Integer i : newInt){            System.out.println(i);        }            }}
------解决方案--------------------------------------------------------
楼上用MAP 是可以的


但如果 仅仅是 int行的数组的话 并且 知道数组中数字的为数

拿数组中数字确定是1为数来说

创建一个 长度是 10的 数组 int[] newArray ;

然后 newArray [oldArray[i]] += oldArray[i]

最后 调整 newArray 到你要的结果数组
------解决方案--------------------------------------------------------
for example

Java code
int[] oldArray = {1,2,1,3,3,2,9,8,9};Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();for (int i : oldArray) {    if (map.containsKey(i)) {        map.put(i, map.get(i)+1);    } else {        map.put(i, 1);    }}int[] newArray = new int[map.size()];int idx = 0;for (Map.Entry<Integer, Integer> e : map.entrySet()) {    newArray[idx++] = e.getKey() * e.getValue();}System.out.println(Arrays.toString(newArray));
  相关解决方案