位运算mask

lc3128

枚举中间+乘法原理

class Solution {

public:

long long numberOfRightTriangles(vector<vector<int>>& grid) {

int n = grid[0].size();

vector<int> col_sum(n, -1); // 提前减一

for (auto& row : grid) {

for (int j = 0; j < n; j++) {

col_sum[j] += row[j];

}

}

long long ans = 0;

for (auto& row : grid) {

int row_sum = reduce(row.begin(), row.end()) - 1; // 提前减一

for (int j = 0; j < row.size(); j++) {

if (row[j] == 1) {

ans += row_sum * col_sum[j];

}

}

}

return ans;

}

};

lcr67

set筛集合 反复询问下一位是否可为1

贪心+hash,从最高位到最低位逐位确定最大异或值

掩码保留高位,避免影响判位、异或配对验证

class Solution {

public:

int findMaximumXOR(vector<int>& nums)

{

int high_bit = __lg(ranges::max(nums));

int ans = 0, mask = 0;

unordered_set<int> seen;

for (int i = high_bit; i >= 0; i--) {

seen.clear();

mask |= 1 << i;

int new_ans = ans | (1 << i);

// 这个比特位可以是 1 吗?

for (int x : nums) {

x &= mask; // 低于 i 的比特位置为 0

if (seen.contains(new_ans ^ x)) {

ans = new_ans;

// 这个比特位可以是 1

break;

}

++seen.insert(x);++

}

}

return ans;

}

};

相关推荐
hetao17338374 小时前
2026-01-14~15 hetao1733837 的刷题笔记
c++·笔记·算法
百度搜不到…4 小时前
背包问题递推公式中的dp[j-nums[j]]到底怎么理解
算法·leetcode·动态规划·背包问题
一起养小猫4 小时前
LeetCode100天Day13-移除元素与多数元素
java·算法·leetcode
ACERT3334 小时前
10.吴恩达机器学习——无监督学习01聚类与异常检测算法
python·算法·机器学习
诗词在线4 小时前
从算法重构到场景复用:古诗词数字化的技术破局与落地实践
python·算法·重构
不穿格子的程序员4 小时前
从零开始写算法——二叉树篇7:从前序与中序遍历序列构造二叉树 + 二叉树的最近公共祖先
数据结构·算法
hetao17338374 小时前
2026-01-12~01-13 hetao1733837 的刷题笔记
c++·笔记·算法
无限码力5 小时前
美团秋招笔试真题 - 放它一马 & 信号模拟
算法·美团秋招·美团笔试·美团笔试真题
qq_433554545 小时前
C++ 图论算法:强连通分量
c++·算法·图论
YuTaoShao5 小时前
【LeetCode 每日一题】2943. 最大化网格图中正方形空洞的面积——(解法二)哈希集合
算法·leetcode·哈希算法