leetcode 3513. 不同 XOR 三元组的数目 I 中等

发布时间:2026/9/12 5:11:05
leetcode 3513. 不同 XOR 三元组的数目 I 中等 给你一个长度为n的整数数组nums其中nums是范围[1, n]内所有数的排列。XOR 三元组定义为三个元素的异或值nums[i] XOR nums[j] XOR nums[k]其中i j k。返回所有可能三元组(i, j, k)中不同的 XOR 值的数量。排列是一个集合中所有元素的重新排列。示例 1输入nums [1,2]输出2解释所有可能的 XOR 三元组值为(0, 0, 0) → 1 XOR 1 XOR 1 1(0, 0, 1) → 1 XOR 1 XOR 2 2(0, 1, 1) → 1 XOR 2 XOR 2 1(1, 1, 1) → 2 XOR 2 XOR 2 2不同的 XOR 值为{1, 2}因此输出为 2。示例 2输入nums [3,1,2]输出4解释可能的 XOR 三元组值包括(0, 0, 0) → 3 XOR 3 XOR 3 3(0, 0, 1) → 3 XOR 3 XOR 1 1(0, 0, 2) → 3 XOR 3 XOR 2 2(0, 1, 2) → 3 XOR 1 XOR 2 0不同的 XOR 值为{0, 1, 2, 3}因此输出为 4。提示1 n nums.length 10^51 nums[i] nnums是从1到n的整数的一个排列。分析异或是不进位加法两个相同的数异或的结果等于 0而 0 异或任何值都等于那个值本身。因此三元组实际上只有取三个不同的数才能得到一个新的数其它情况的值要么是 0要么是其中一个值本身。当 n3 时因为没有三个不同的数因此只能得到 01······n当 n 大于等于 3 时不妨设最大值 n 的取值范围为 [2^k, 2^(k1)-1 )此时可以构造出 01······nn1······ 2^(k1)-1。因此答案为 2^(k1)即大于 n 的最小的 2 的幂。class Solution { public: int uniqueXorTriplets(vectorint nums) { int nnums.size(),maxnnums[0]; if(n3)return n; for(int i1;in;i) maxnmax(maxn,nums[i]); int cnt2; while(cntmaxn)cnt*2; return cnt; } };

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询