這篇文章主要講解了“如何實現(xiàn)兩個異或相等數(shù)組的三元組數(shù)目”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何實現(xiàn)兩個異或相等數(shù)組的三元組數(shù)目”吧!
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名與空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、東川網(wǎng)站維護、網(wǎng)站推廣。
給你一個整數(shù)數(shù)組
arr
。現(xiàn)需要從數(shù)組中取三個下標
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
) 的數(shù)目。
力扣鏈接:https://leetcode-cn.com/problems/count-triplets-that-can-form-two-arrays-of-equal-xor
示例 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
/* 方法一:不假思索的暴力循環(huán)。沒什么好說的,也沒什么好看的。 */ class Solution { public int countTriplets(int[] arr) { int res=0; int n1,n2; for(int i =0;i /* 方法二: 思路: 當(dāng)a==b時,a^b=0即 arr[i] ^ arr[i + 1] ^ ... ^ arr[j - 1]^arr[j] ^ arr[j + 1] ^ ... ^ arr[k] = 0; 在滿足上述條件的i和k之間任意取一個j,這個j的左右異或值都是相等的。 */ class Solution { public int countTriplets(int[] arr) { int len = arr.length; int res = 0; for(int i = 0; i < len - 1; i ++){ int sum = 0; for(int k = i; k < len ; k ++){ sum ^= arr[k]; if (sum == 0 && k > i) { res += (k - i); } } } return res; } }總結(jié):兩個值(i,k)之間的所有數(shù)的異或值等于0,則中間任意一個數(shù)的左右兩邊的異或值相等[i,j)==[j,k]。
感謝各位的閱讀,以上就是“如何實現(xiàn)兩個異或相等數(shù)組的三元組數(shù)目”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何實現(xiàn)兩個異或相等數(shù)組的三元組數(shù)目這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
文章題目:如何實現(xiàn)兩個異或相等數(shù)組的三元組數(shù)目
標題鏈接:http://weahome.cn/article/pchsed.html