1442. 形成两个异或相等数组的三元组数目[通俗易懂]

1442. 形成两个异或相等数组的三元组数目[通俗易懂]给你一个整数数组 arr 。现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。a 和 b 定义如下:a = arr[i] ^ arr[i + 1] ^ … ^ arr[j – 1]b = arr[j] ^ arr[j + 1] ^ … ^ arr[k]注意:^ 表示 按位异或 操作。请返回能够令 a == b 成立的三元组 (i, j , k) 的数目。示例 1:输入:arr = [2,3,1,6,7]

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给你一个整数数组 arr 。

现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。

a 和 b 定义如下:

a = arr[i] ^ arr[i + 1] ^ … ^ arr[j – 1]
b = arr[j] ^ arr[j + 1] ^ … ^ arr[k]
注意:^ 表示 按位异或 操作。

请返回能够令 a == b 成立的三元组 (i, j , k) 的数目。

示例 1:

输入:arr = [2,3,1,6,7]
输出:4
解释:满足题意的三元组分别是 (0,1,2), (0,2,2), (2,3,4) 以及 (2,4,4)
示例 2:

输入:arr = [1,1,1,1,1]
输出:10
示例 3:

输入:arr = [2,3]
输出:0
示例 4:

输入:arr = [1,3,5,7,9]
输出:3
示例 5:

输入:arr = [7,11,12,9,5,2,7,17,22]
输出:8
 

提示:

1 <= arr.length <= 300
1 <= arr[i] <= 10^8

题解
1.三重for

class Solution { 
   
public:
    int countTriplets(vector<int>& arr) { 
   
        vector<int>s;
        s.push_back(0);
        int a = 0;
        for(int i = 0;i < arr.size();i ++){ 
   
            s.push_back(arr[i] ^ a);
            a ^= arr[i];
        }
        int ans = 0;
        for(int i = 1;i < s.size();i ++){ 
   
            for(int j = i + 1;j < s.size();j ++){ 
   
                for(int k = j;k < s.size();k ++){ 
   
                    if(s[j - 1] ^ s[i - 1] == s[k] ^ s[j - 1])ans ++;
                }
            }
        }
        return ans;
    }
};

2.双重for

class Solution { 
   
public:
    int countTriplets(vector<int>& arr) { 
   
        vector<int>s;
        s.push_back(0);
        int a = 0;
        for(int i = 0;i < arr.size();i ++){ 
   
            s.push_back(arr[i] ^ a);
            a ^= arr[i];
        }
        int ans = 0;
        for(int i = 1;i < s.size();i ++){ 
   
            for(int k = i + 1;k < s.size();k ++){ 
   
                if(s[i - 1] == s[k])ans += (k - i);
            }
        }
        return ans;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168563.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月9日 下午3:46
下一篇 2022年8月9日 下午4:00


相关推荐

  • Nginx面试题总结

    Nginx面试题总结为什么要用 Nginx 为什么 Nginx 性能这么高 Nginx 怎么处理请求的 什么是正向代理和反向代理

    2026年3月16日
    1
  • ubuntu18.04 linux journalctl 命令

    ubuntu18.04 linux journalctl 命令目录Help 输出所有的日志记录 匹配(match) 把日志保存到文件中 限定日志所能占用的最高容量 查看某次启动后的日志 查看指定时间段的日志 同时应用match和时间过滤条件 按unit过滤日志 通过日志级别进行过滤 实时更新日志 只显示最新的n行 控制输出 按可执行文件的路径过滤 查看内核日志 总结journalctl用来查询systemd…

    2022年5月24日
    62
  • JavaScript下载本地文件

    JavaScript下载本地文件网上很多关于JS下载文件操作的代码,都过于繁杂,偶然找到这个方法,务必记录一下,太简单实用了/Template/MaterielDictionary.xlsx为文件相对路径,后边参数可不动。window.open(‘/Template/MaterielDictionary.xlsx’,’newwindow’,’height=100,width=400,top=0

    2022年6月10日
    174
  • log4j2.xml 配置文件详解

    log4j2.xml 配置文件详解一 log4j2 介绍 log4j2 x 版本不再支持像 1 x 中的 properties 后缀的文件配置方式 2 x 版本配置文件后缀名只能为 xml json 或者 jsn 配置文件的格式 log2j 配置文件可以是 xml 格式的 也可以是 json 格式的 配置文件的位置 log4j2 默认会在 classpath 目录下寻找 log4j2 xml log4j json log4j jsn 等

    2026年3月16日
    2
  • windows版本tcping参数详解

    windows版本tcping参数详解描述在本地主机和远程主机之间,tcping可以测试出执行TCP三次握手所需的时间(SYN,SYN/ACK,ACK)。最终ACK传送时间不包括在内,只有最少的时间才能将其丢弃在近端的电线。概要#tcping[-tdsvf46][-iinterval][-ntimes][-winterval][-bn][-rtimes][-jdepth][–teef…

    2022年6月23日
    52
  • Spring Boot读取properties配置文件中的数据

    Spring Boot读取properties配置文件中的数据JavaEE 目录 https blog csdn net dkbnull article details 87932809Spri 专栏 https blog csdn net dkbnull category 9278145 htmlSpringCl 专栏 https blog csdn net dkbnull category 9287932 ht

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号