我正在尝试一种解决以下问题的有效算法:
给定一个整数数组,返回数组中元素的索引,该索引等于数组中其余元素的总和;如果不存在这样的元素,则返回-1。
例如,给定数组[1,2,3,6]
,然后从给定6=1+2+3;
的{{1}}返回4,从[3, -3, 5, 1]
开始返回0。
有什么想法?
答案 0 :(得分:2)
在两次运行中解决这个问题:
arrSum == i * 2
,arrSum - i == i
是否成立 - 相当于int sum = 0;
for(int i : arr)
sum += i;
for(int i = 0 ; i < arr.length ; i++)
if(sum == arr[i] * 2)
return i;
return -1;
。如果它成立,您就找到了搜索过的元素。在代码中:
O(n)
在class Array
def each_run
uniq.each do |item|
yield(item, self.count(item))
end
end
end
中运行。