抢答题!!!

例如一个整型数组 int temp[] = {2,2,1,2,3,3,2}
其中2这个元素的个数大于了数组长度的一半,则称2为这个数组的“持重点”;
用程序算出给定这个数组的持重点是几,并返回它的所有下标;

[color=red][/color]
[b]问题补充:[/b]
怎么就会完全不明白呢?就拿这个数组来说,现在我们知道2是持重点,假如在不知道的情况下,让你求出来谁是持重点,并返回这个持重点的所有下标。
谁把程序写出来,我把仅有的积分全贡出去。

[code="java"]import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class Test {

public static void main(String[] args) {
    int temp[] = {2,2,1,2,3,3,2};
    int chiZhongDian = getChiZhongDian(temp);

    System.out.println("chiZhongDian:" + chiZhongDian);

    List appearList = getIndex(temp , chiZhongDian);

    System.out.println("index in Array:");
    for(Iterator itr = appearList.iterator();itr.hasNext();)
    {
        System.out.print(itr.next() + " ");
    }

}

public static List getIndex(int[] temp, int number)
{
    List appearList = new ArrayList();

    for(int i = 0;i < temp.length;i ++)
    {
        if(temp[i] == number)
        {
            appearList.add(new Integer(i));
        }
    }

    return appearList;
}

public static int getChiZhongDian(int[] temp) {
    int size = temp.length;

    Map chiZhongDianMap = new HashMap();
    for (int i = 0; i < temp.length; i++) {
        if (chiZhongDianMap.get(new Integer(temp[i])) == null) {
            Integer eachCount = new Integer(1);

            chiZhongDianMap.put(new Integer(temp[i]), new Integer(1));
        } else {
            Integer eachCount = (Integer) chiZhongDianMap
                    .get(new Integer(temp[i]));
            eachCount = new Integer(eachCount.intValue() + 1);
            chiZhongDianMap.put(new Integer(temp[i]), eachCount);
        }
    }

    for(Iterator itr = chiZhongDianMap.keySet().iterator();itr.hasNext();)
    {
        Integer number = (Integer)itr.next();
        Integer eachCount = (Integer)chiZhongDianMap.get(number);

        if(eachCount.intValue() > (size / 2))
            return number.intValue();
    }

    throw new RuntimeException("Can not find ChiZhongDian");
}

}[/code]

完全不明白你说的是什么

重新排序,然后再查每个数的数量,取最多的,最后再回到该数组中取下标

随便写了点代码,混个分,如果权重有重复现象,没加以判断,参考吧
[code="java"]
import java.util.HashMap;
import java.util.Iterator;

public class Main
{
public static void main(String[] args)
{
int[] temp = {1,2,4,3,2,3,4,1,2,3,2,3,4,2,1,2,3,4,3,2,4,2,3,4,4,1,2,3,4};

    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();

    for (int i = 0; i < temp.length; i++)
    {
        Integer count = map.get(new Integer(temp[i]));
        if(count != null)
            map.put(new Integer(temp[i]), ++count);
        else
            map.put(new Integer(temp[i]), 1);
    }

    Integer max_value = 0;
    Integer max_key = null;

    for (Iterator iter = map.keySet().iterator(); iter.hasNext();)
    {
        Integer key = (Integer) iter.next();
        if(max_value < map.get(key))
            max_key = key;
    }
    System.out.println("权重最大的是:"+max_key+"\n下标为:");
    for (int i = 0; i < temp.length; i++)
    {
        if(temp[i] == max_key)
        System.out.println("["+i+"]");
    }
}

}
[/code]