題目連結(jié):
題目意譯:
你被給定一個(gè)索引值從 0 開始數(shù)的整數(shù)陣列 nums。一對(duì)整數(shù) x 和 y 被稱為一個(gè)「強(qiáng)力配對(duì)」,代表著其滿足以下條件:
|x - y| ≦ min(x, y)
你需要從 nums 中選出兩個(gè)整數(shù)使它們形成一對(duì)強(qiáng)力配對(duì),並且它們的按位元(Bitwise)XOR 值是陣列中所有強(qiáng)力配對(duì)最大者。
回傳陣列 nums 的所有強(qiáng)力配對(duì)中最大的 XOR 值。
注意到你可以選同一個(gè)整數(shù)來形成一個(gè)數(shù)對(duì)。
限制:
1 ≦ nums.length ≦ 50
1 ≦ nums[i] ≦ 100
範(fàn)例測(cè)資:
範(fàn)例 1:
輸入: nums = [1,2,3,4,5]
輸出: 7
解釋: 陣列 nums 中有 11 個(gè)強(qiáng)力配對(duì):(1, 1) 、 (1, 2) 、 (2, 2) 、 (2, 3) 、 (2, 4) 、 (3, 3) 、 (3, 4) 、 (3, 5) 、 (4, 4) 、 (4, 5) 和 (5, 5)。
這些數(shù)對(duì)中最大的 XOR 值為 3 XOR 4 = 7。
範(fàn)例 2:
輸入: nums = [10,100]
輸出: 0
解釋: 陣列 nums 中有 2 個(gè)強(qiáng)力配對(duì):(10, 10) 和 (100, 100)。
這些數(shù)對(duì)中最大的 XOR 值為 10 XOR 10 = 0。而數(shù)對(duì) (100, 100) 也會(huì)得到 XOR 值 100 XOR 100 = 0。
範(fàn)例 3:
輸入: nums = [5,6,25,30]
輸出: 7
解釋: 陣列 nums 中有 6 個(gè)強(qiáng)力配對(duì):(5, 5) 、 (5, 6) 、 (6, 6) 、 (25, 25) 、 (25, 30) 和 (30, 30)。
這些數(shù)對(duì)中最大的 XOR 值為 25 XOR 30 = 7。而另一個(gè)非零 XOR 值的是 5 XOR 6 = 3。
解題思維:
由於 nums.length 最大也才 50 個(gè)數(shù)字,因此直接窮舉所有數(shù)對(duì)並取出那些是強(qiáng)力配對(duì)的(即符合 |x - y| ≦ min(x, y) 之條件者)取最大的 XOR 值即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。