leetcode 第188场周赛 形成两个异或相等数组的三元组数目

解题思路:原问题等价于找到这样的连续子数组:子数组中所有的数字异或结果为零,假设这个区间是[i,k],包含i和k,然后j取[i+1,k]中的任意一个元素,将这个子数组分为两个数组,两个数组的异或结果一定是相等的,就找到了所有满足条件的所有三元组,把所有的可能结果相加即可

class Solution:
    def countTriplets(self, arr: List[int]) -> int:
        size = len(arr)
        if size < 2:
            return 0
        res = 0
        for i in range(size-1):
            tmp = arr[i]
            for j in range(i+1, size):
                tmp = tmp ^ arr[j]
                if tmp == 0:
                    res += j - i
        return res

你可能感兴趣的:(#,周赛,数据结构与算法,数据结构,leetcode,算法,python)