大餐计数

阅读 42

2021-09-21

题目描述:
示例 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;
    }
}

精彩评论(0)

0 0 举报