文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给定一个整数数组 A,找出索引为 (i, j, k) 的三元组,使得:

0 <= i < A.length
0 <= j < A.length
0 <= k < A.length
A[i] & A[j] & A[k] == 0,其中 & 表示按位与(AND)操作符。
示例:
输入:[2,1,3]
输出:12
解释:我们可以选出如下 i, j, k 三元组:
(i=0, j=0, k=1) : 2 & 2 & 1
(i=0, j=1, k=0) : 2 & 1 & 2
(i=0, j=1, k=1) : 2 & 1 & 1
(i=0, j=1, k=2) : 2 & 1 & 3
(i=0, j=2, k=1) : 2 & 3 & 1
(i=1, j=0, k=0) : 1 & 2 & 2
(i=1, j=0, k=1) : 1 & 2 & 1
(i=1, j=0, k=2) : 1 & 2 & 3
(i=1, j=1, k=0) : 1 & 1 & 2
(i=1, j=2, k=0) : 1 & 3 & 2
(i=2, j=0, k=1) : 3 & 2 & 1
(i=2, j=1, k=0) : 3 & 1 & 2提示:
1 <= A.length <= 1000
0 <= A[i] < 2^16

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/triples-with-bitwise-and-equal-to-zero
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 两个数 & 操作后,不会变大,开数组记录两两 & 的结果的数量
class Solution {public:int countTriplets(vector<int>& A) {vector<int> count(1<<16, 0);//两个数 & 操作后,不会变大for(int i = 0; i < A.size(); ++i){for(int j = 0; j < A.size(); ++j){count[A[i] & A[j]]++;}}int ans = 0;for(int i = 0; i < A.size(); ++i){for(int j = 0; j < (1<<16); ++j){if((A[i] & j) == 0)ans += count[j];}}return ans;}
};

时间复杂度 O(216n)O(2^{16}n)O(216n)

648 ms 14.7 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 982. 按位与为零的三元组(位运算+计数)相关推荐

  1. 982. 按位与为零的三元组

    给定一个整数数组 A,找出索引为 (i, j, k) 的三元组,使得: 0 <= i < A.length 0 <= j < A.length 0 <= k < A ...

  2. LeetCode 136. Single Number【哈希表/位运算/数学】简单

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12.由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止:由于LeetCode还在不断地创建新 ...

  3. Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)

    535. TinyURL 的加密与解密 TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它 ...

  4. 134. Leetcode 136. 只出现一次的数字 (位运算-只出现一次的数字相关题目)

    class Solution:def singleNumber(self, nums: List[int]) -> int:res = 0for i in range(len(nums)):re ...

  5. 【LeetCode笔记】461. 汉明距离(Java、位运算)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 既然是二进制,那就十有八九用位运算符 既然是不同,那肯定用异或 思路 & 代码 两种方法,总体来说都是处理异或值 方法一,转换成字 ...

  6. [Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]

    [问题描述][中等] [解答思路] 1. 暴力 逐位与 ,只需要判断i= 0 或 i == 2147483647 的话,就跳出 for 循环即可. 时间复杂度:O(N) 空间复杂度:O(1) publ ...

  7. python:实现Triplets with zero sum零和三元组(附完整源码)

    python:实现Triplets with zero sum零和三元组 def find_Triplets_with_zero_sum(arr, num):found = False# sort a ...

  8. 【LeetCode 172. 阶乘后的零】

    LeetCode 172. 阶乘后的零 题目描述 解题思路 class Solution {public int trailingZeroes(int n) {//思路//计算阶乘后为零的个数 因为2 ...

  9. LeetCode位运算(找出落单的数,二进制中1的个数,2的幂等)

    文章目录 位运算理论+技巧介绍 1.与 & 2.异或 ^ 3.移位及综合运用(指定位置) 4.同或 开撸 1. lc136 只出现一次的数字 2. lc137 只出现一次的数字II 3. lc ...

最新文章

  1. python 加密和解密
  2. 借花献佛!docker讲解视频
  3. jqGrid参数详解
  4. python求积分基于numpy_NumPy 实现梯形法积分
  5. 互斥量和信号量的区别
  6. 计算机组成原理期末复习题
  7. ES6的class方法基本用法
  8. julia 数组类型转换_在Julia中确定类型的超类型
  9. 2015.10.13课堂
  10. cuda10.2安装包 和 cudnn安装包下载
  11. svn 迁移到git下全过程
  12. Java 重写(Override)与重载(Overload)区别
  13. 计算机丢失w95scm.dll,修复w95scm.dll
  14. 射频微电子学_专注于射频前端芯片,苏州汉天下完成新一轮融资
  15. gg修改器怎么能让服务器检测不到,gg修改器怎么绕过检测 | 手游网游页游攻略大全...
  16. 在聊天群中,如何快速获取信息,了解群中讨论的话题。
  17. 电商用户价值分析(应用RFM模型)
  18. WAF(Web Application Firewall)
  19. 爬取掌阅app免费电子书数据
  20. 项目开发中,数据库是怎么设计的?

热门文章

  1. 访问linux服务主机,如何把Linux配置为日志服务主机。
  2. python画两条曲线图_python绘制多个曲线的折线图
  3. 解决AttributeError AttributeError: 'NoneType' object has no attribute 'filename'
  4. MySQL InnoDB 是如何存储数据的
  5. C++异常以及错误处理
  6. Duplicate interface definition for class
  7. linux grep 匹配空格_17 个案例,5 分钟简单搞定 Linux 正则表达式!
  8. 小程序转h5之后 vant文件查找失败:_你还在使用原生开发小程序吗
  9. ci phpexcel mysql_PHPExcel导入数据到mysql数据库
  10. java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...