type
status
date
slug
summary
tags
category
icon
password
创建时间
Feb 8, 2025 01:49 AM
给你一个由 正 整数组成的数组
nums
。如果
nums
的子数组中位于 不同 位置的每对元素按位 与(AND)运算的结果等于 0
,则称该子数组为 优雅 子数组。返回 最长 的优雅子数组的长度。
子数组 是数组中的一个 连续 部分。
注意:长度为
1
的子数组始终视作优雅子数组。位运算——与或(AND/OR)
思路:将位运算当作集合来进行处理。常见操作对应:
集合与集合
集合操作 | 位运算 |
交集 | a & b |
并集 | a | b |
对称差 | a ^ b |
差 | a & ~b |
差(子集) | a ^ b |
判断是否为子集(包含于) | a & b = a, a | b = b(a 属于 b) |
集合与元素
集合操作 | 位运算 |
全集 | (1 << n) - 1 |
补集 | ((1 << n) - 1) ^ s |
属于 | (s >> i) & 1 = 1 |
不属于 | (s >> i) & 1 = 0 |
添加元素 | s | (1 << i) |
删除元素 | s & ~(1 << i) |
删除元素(一定在集合中) | s ^ (1 << i) |
补充:
