文章目录

  • 本题分析
  • 题目链接

本题分析

大餐 是指 恰好包含两道不同餐品 的一餐,其美味程度之和等于 2 的幂。
注意,只要餐品下标不同,就可以认为是不同的餐品,即便它们的美味程度相同。

示例

输入:deliciousness = [1,3,5,7,9]
输出:4
解释:大餐的美味程度组合为 (1,3) 、(1,7) 、(3,5) 和 (7,9) 。
它们各自的美味程度之和分别为 4 、8 、8 和 16 ,都是 2 的幂。

题意重述:给定一个数组a[ ],求ai+aj=2n(n=0,1,...,21.i≠j)a_i+a_j=2^n(n=0,1,...,21. \\ i≠j)ai​+aj​=2n(n=0,1,...,21.i​=j)的种数

枚举数组中的每个元素aka_kak​,对于数组中a0−ak−1a_{0} -a_{k-1}a0​−ak−1​这些元素(暂时令为t),查找有多少个t满足t+ak=2n(n=0,1,...,21)t+a_k=2^n(n=0,1,...,21)t+ak​=2n(n=0,1,...,21)。

使用哈希表unordered_map,遍历完一个x: a[ ] ,使其在哈希表中的值++。

ac代码

class Solution {public:int countPairs(vector<int>& d) {int res=0,mod=1e9+7;unordered_map<int,int> hash;//哈希表for(auto  x:d){for(int i=0;i<=21;i++){int t =(1<<i)-x;  //位运算优化2的i次方if(hash.count(t))res= (res+hash[t]) % mod;  //勿忘取模}hash[x]++;  //d数组中遍历到的每个元素都要在hash表中记录。}return res;}
};

题目链接

Leetcode1711. 大餐计数

Leetcode1711. 大餐计数[C++题解]:哈希表和枚举相关推荐

  1. PAT甲级1145 Hashing - Average Search Time:[C++题解]哈希表、哈希表开放寻址法、二次探测法、求平均查找次数

    文章目录 题目分析 题目链接 题目分析 来源:acwing 本题的分析见另一道PAT的题目:PAT甲级1078 Hashing:[C++题解]哈希表.哈希表开放寻址法.二次探测法链接的题目就是让建立h ...

  2. PAT甲级1092 To Buy or Not to Buy :[C++题解]哈希表

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析 用unordered_map存每种珠子的个数,商店有的加上,伊娃需要的减去.这样哈希表中存的就是每种珠子的净值.大于0表示多余的,小于 ...

  3. PAT甲级1121 Damn Single :[C++题解]哈希表、结构体

    文章目录 题目分析 题目来源 题目分析 来源:acwing 思路:一对伴侣存入一个结构体中.查询的集合放入哈希表unordered_set<int> S;中.然后遍历每一对伴侣,如果同时存 ...

  4. PAT甲级1116 Come on! Let‘s C:[C++题解]哈希表、素数

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:使用哈希表存一下每个id获得奖,然后查询输出即可. ac代码 #include<bits/stdc++.h> using ...

  5. PAT甲级1124 Raffle for Weibo Followers :[C++题解]哈希表、微博转发抽奖

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:开一个哈希表存已经中将的用户,避免重复发奖. 遍历所有m条姓名,从第一个中奖的开始,依次模拟即可. ac代码 #include< ...

  6. PAT甲级1078 Hashing:[C++题解]哈希表、哈希表开放寻址法、二次探测法

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题建立hash表是利用只具有正增量的二次探测法来解决冲突, 索引 = 数 % 哈希表的大小 如果映射到同一个索引idx,hash表 ...

  7. PAT甲级1149 Dangerous Goods Packaging :[C++题解]哈希表、逆向思维

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题要反着想:先把所有询问存起来,每个询问存在一个hash表中.然后对于每对不相容的物品,查看是否同时在一个hash表中. ac代码 ...

  8. PAT甲级1048 Find Coins :[C++题解]哈希表、两个硬币之和为定值

    文章目录 题目分析 题目链接 题目分析 来源:acwing 题意:找两个数,和为定值. 分析:本题在各大OJ上几乎都有, 反正在Leetcode上做过.本题有两种常见的解法,一种是双指针,另一种是用哈 ...

  9. PAT甲级1144 The Missing Number:[C++题解]哈希表

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 把所有的数放进一个hash表,然后从1开始遍历,看每个数是不是在hash表中,输出第一个不在表中的元素. ac代码 #include ...

最新文章

  1. Django视图之类视图与中间件
  2. php谁写的,谁写过 PHP的 demo? 我写了一个 返回3301 求助
  3. layui d多文件上传
  4. 图说:为什么Java中的字符串被定义为不可变的
  5. 算法入门篇二 认识O(NlogN)的排序
  6. qt int转换成qstring_Qt 加载cern-root库 并调用root类
  7. php7 memcached sasl,Mac安装memcached扩展支持sasl
  8. 罗永浩直播又翻车?网友吐槽半价车是黑幕,本人回应
  9. 该网站可能含有恶意软件,有可能会危害您的电脑 清除办法
  10. 数据洞察|Qtum量子链4月主网报告
  11. DenseNet介绍
  12. 2021华为杯数学建模获奖经验分享
  13. linux ascii游戏,linux – Bash ASCII实现
  14. pr中音频转场的介绍和使用
  15. 【数字IC/FPGA】时钟无毛刺切换
  16. 错误:未报告的异常错误,必须对其进行捕获或声明以便抛出
  17. Photoshop去除图片水印
  18. js数字转字符串和字符串转数字的方法
  19. SolidWorks快速绘制齿轮模型
  20. 重磅丨云和恩墨zCloud数据库云管平台2.0版本发布

热门文章

  1. cocos2d-x 3.0 常见问题及解决
  2. 把自己编写的python模块添加到PYTHONPATH上
  3. 程序员之工具杂烩(一)
  4. 【Linux学习】Linux系统管理2—作业调度
  5. Oracle 10G 全新创建数据库过程(暂记)
  6. 做报表时用到的一个存储过程
  7. cad lisp 背景遮罩_给文字批量添加边界偏移因子为1.1(或其他值)的背景遮罩的源程序(有详细注解)...
  8. python爬虫如何运行在web_Python Web爬网-使用爬虫进行测试
  9. 【Python】纯代码通过神经网络实现线性回归的拟合
  10. 【控制】如何入门自动控制理论