0
点赞
收藏
分享

微信扫一扫

大餐计数

Python百事通 2021-09-21 阅读 42
今日算法
题目描述:
示例 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 条评论