用JAVA实现得出数组中绝对值相等的元素处于哪些下标

来源:百度知道 编辑:UC知道 时间:2024/05/10 14:23:02
如下以排好顺序的数组:
{-7,-3,-1,3,5,6}
它们对应的下标是:
0,1,2,3,4,5,6
比如-3和3的绝对值相等,对应的下标为1和3
用JAVA实现这种功能

楼上的不是的问题是算法的问题哈哈
用空间换时间吧
你的算饭复杂度是n^2
HashMap<Integer,LinkList<Integer>> counter = new HashMap<Integer,LinkList<Integer>>();
for(int i = 0 ; i < array.length ; i++){
if(counter.containsKey(Math.abs(array[i]))){
counter.get(Math.abs(array[i])).add(i);
}else{
LinkList<Integer> x = new LinkList<Integer>();
x.add(i);
coutner.put(Math.abs(array[i]),x);
}
}

假设你的数组是 n[m] (n[0]~n[m-1]这m个元素)

for( i=0; i<m; i++)
_ for( j=i; j<m; j++)
___ if( n[i]+n[j] == 0 || n[i]-n[j] == 0)
_____ printf("%d,%d\n",i,j);

PS:JAVA没怎么学,不清楚有什么更好的方法,这个是纯粹C语言的方法,而且没有优化,数组元素多的时候效率低)
PS2:baidu这SB...行首不能加空格,我用下划线代替来对齐了-_-