图解力扣:1442.形成两个异或相等数组的三元组数目

简介: 图解力扣:1442.形成两个异或相等数组的三元组数目

1442.形成两个异或相等数组的三元组数目


https://leetcode-cn.com/problems/count-triplets-that-can-form-two-arrays-of-equal-xor/

难度:中等


题目:

给你一个整数数组 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.length <= 300
  • 1 <= arr[i] <= 10^8


示例:

示例 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


分析:

a = arr[i] ^ arr[i + 1] ^ ... ^ arr[j - 1]

b = arr[j] ^ arr[j + 1] ^ ... ^ arr[k]

由于异或公式a ==b 等价于 a^b = 0

那么,解题就变成了a[i] ^ ... ^ a[j] ^ ... ^ a[k] = 0

我们只需要确定i和k,由于i<j<=k,则通过j的取值范围就能得到有k-i个解题结果。

具体可以看图解:


网络异常,图片无法展示
|


解题:

class Solution:
    def countTriplets(self, arr: List[int]) -> int:
        ret = 0
        ln = len(arr)
        for i in range(ln - 1):
            cur = arr[i]
            for k in range(i+1,ln):
                cur ^= arr[k]
                if cur == 0:
                    ret += k - i
        return ret




相关文章
|
2月前
|
算法
【数组相关面试题】LeetCode试题
【数组相关面试题】LeetCode试题
|
1月前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
4天前
|
算法
leetcode代码记录(寻找两个正序数组的中位数
leetcode代码记录(寻找两个正序数组的中位数
10 2
|
4天前
|
索引
leetcode代码记录(最长重复子数组
leetcode代码记录(最长重复子数组
8 0
|
4天前
leetcode代码记录(两个数组的交集
leetcode代码记录(两个数组的交集
8 1
|
4天前
leetcode代码记录(最大子数组和
leetcode代码记录(最大子数组和
9 2
|
7天前
|
存储 算法
Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组
给定一个无序整数数组和目标值,找出数组中和为目标值的两个数的下标。要求不重复且可按任意顺序返回。示例:输入nums = [2,7,11,15], target = 9,输出[0,1]。暴力解法时间复杂度O(n²),优化解法利用哈希表实现,时间复杂度O(n)。
19 0
|
13天前
|
索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
|
19天前
[leetcode~数位动态规划] 2719. 统计整数数目 hard
[leetcode~数位动态规划] 2719. 统计整数数目 hard
|
28天前
【力扣】238. 除自身以外数组的乘积
【力扣】238. 除自身以外数组的乘积