按位與為零的三元組

2021-10-09 04:14:27 字數 682 閱讀 1593

給定乙個整數陣列 a,找出索引為 (i, j, k) 的三元組,使得:

0 <= i < a.length

0 <= j < a.length

0 <= k < a.length

a[i] & a[j] & a[k] == 0,其中 & 表示按位與(and)操作符。

暴力法看,這道題就是把先算出a[i]&a[j],然後再遍歷一遍陣列,計算能夠和其相與結果為0的元素。其時間複雜度可以高達o(n^3)。而能夠和乙個數num,相與結果為0的數,其二進位制一定是在num的二進位制表示中為1時為0,而其他位任意的值,那麼最終歸於要求解對於每乙個數字num,有多少個這樣的數字。

滿足上述條件的最大數data,應該是num取反,而我們需要從這個數data開始變化,同時保證相應位應該是0,遍歷乙個二進位制所有表示法的一種方式是每一次減1,而同時要求對應位為0,不能在減1的過程中被改變,所以和最大值進行&即可。

class

solution

mem[0]

+=1;

}int ans=0;

for(

int a : a)

for(

int b : a)

ans+

=mem[a&b]

;return ans;}}

;

求三數之和為零的三元組集合

題目要求三數之和為零,即 a b c 0 那麼若滿足b c a的話就滿足題目的第乙個要求啦。假設 a tem 那麼 b c tem就說明滿足條件。這樣的話三數之和變成了兩數之和,再兩個數字和的基礎上,只需要找到乙個tem為定點以後,然後再判斷陣列中剩下的數字兩兩相加是否等於tem即可。若用暴力求解的...

等差三元組

題目 和是2組不同的等差三元組,除了等差的性質之外,還有個奇妙的地方在於 5 2 3 2 1 2 7 2 5 2 3 2 n 15。同這對三元組也存在同樣的性質 19 2 15 2 11 2 7 2 5 2 3 2 n 15。這種成對的三元組還有很多。當n 15時,有3對,分別是和,和,和。現給出乙...

完美三元組

問題 定義完美三元組,a,b,d a是d的倍數,b是d的倍數,且a b d 1 輸入 t組測試資料,第一行乙個t 1 t 10000 之後t行每行兩個整數l,r,表示三元組中a 的取值區間 l,r 在此條件下,求滿足的完美三元組的總數 1 l r 100000 輸出 乙個整數。分析 首先,a的值已經...