题目描述:
示例 1:
示例 2:
思路:
代码实现:
class Solution {
public int countPairs(int[] deliciousness) {
int mod = 1000000007;
int len = deliciousness.length;
Map<Integer, Integer> map = new HashMap(len);
int max = 0;
for (int i = 0; i < len; i++) {
max = Math.max(max, deliciousness[I]);
}
max = 2 * max;
List<Integer> sumArr = new ArrayList();
for (int i = 1; i <= max; i *= 2) {
sumArr.add(i);
}
int count = 0;
for (int i = 0; i < len; i++) {
for (int j = 0; j < sumArr.size(); j++) {
int num = sumArr.get(j) - deliciousness[I];
if (map.containsKey(num)) {
int index = map.get(num);
count += index;
count %= mod;
}
}
if (map.containsKey(deliciousness[i])) {
int index = map.get(deliciousness[I]);
map.put(deliciousness[i], ++index);
} else {
map.put(deliciousness[i], 1);
}
}
return count;
}
}