/*
难度:中等
形成两个异或相等数组的三元组数目
给你一个整数数组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
解释: (0,1,2), (0,2,2), (2,3,4), (2,4,4)
示例3:
输入:arr = [2,3]
输出:0
示例4:
输入:arr = [1,3,5,7,9]
输出:3
示例4:
输入:arr = [7,11,12,9,5,2,7,17,22]
输出:8
提示:
1 <= arr.length <= 300
1 <= arr[i] <= 10^8
*/
extension Daily {
static func test_leetcode1442() {
let cases = [
[2,3,1,6,7],
[1,1,1,1,1],
[2,3],
[1,3,5,7,9],
[7,11,12,9,5,2,7,17,22]
]
for arr in cases {
print("输入:\(arr)")
let res = Daily.leetcode1442(arr)
print("输出:\(res)\n")
// print("最终结果 \(res)")
}
}
static func leetcode1442(_ arr: [Int]) -> Int {
if arr.count < 2 {
return 0
}
var total = 0
for idx in 0..<(arr.count-1) {
var yihuo = arr[idx]
for idx2 in (idx+1)..<arr.count {
yihuo ^= arr[idx2]
if yihuo == 0 {
total += (idx2 - idx)
}
}
}
return total
}
}
【LeetCode 1442】形成两个异或相等数组的三元组数目
最新推荐文章于 2021-12-30 11:20:02 发布