1、题目

image.png

2、分析与解答

  1. class Solution {
  2. public int countPairs(int[] deliciousness) {
  3. final int mod = 1000000007;
  4. int max = 0;
  5. for(int deli : deliciousness) {
  6. max = Math.max(deli,max);
  7. }
  8. int maxValue = 2 * max;
  9. int pairs = 0;
  10. Map<Integer,Integer> map = new HashMap<>();
  11. for(int i = 0;i < deliciousness.length;i++) {
  12. int val = deliciousness[i];
  13. for(int sum = 1;sum <= maxValue; sum<<=1) {
  14. int count = map.getOrDefault(sum - val , 0);
  15. pairs = (pairs + count) % mod;
  16. }
  17. map.put(val,map.getOrDefault(val,0) + 1);
  18. }
  19. return pairs;
  20. }
  21. }