LC 陣列中兩個數的最大異或值

2021-10-21 18:01:26 字數 788 閱讀 6559

// // 根據圖進行理解

// 題目中說到最大數小於2的31次方,所以for迴圈31次即可

// 先確定高位,再確定低位(貪心演算法),才能保證這道題的性質

// 1位接著1位去確定這個數的大小

// 主要思路:構造具備公共字首的字典樹,每次遍歷數字,如果當前數字高位為1時,判斷是否存在0的支路

// 如果當前數字低位數字為0時,判斷當前是否存在1的支路。

// 依次遍歷完所有字元,最終得到最大的result

class

solution

; node *zero;}

;void

buildtrie

(node *root,

int num)

root = root-

>one;

}else

root = root-

>zero;}}

}public

:int

findmaximumxor

(vector<

int>

& nums)

int res =0;

for(

auto num : nums)

else

}else

else}}

res =

max(res, tmpval);}

return res;}}

;

421 陣列中兩個數的最大異或值

標籤 位運算 字典樹。題目 給你乙個整數陣列 nums 返回 nums i xor nums j 的最大運算結果,其中 0 i j n 高階 你可以在 o n 的時間解決這個問題嗎?輸入 nums 3 10,5 25,2 8 輸出 28 解釋 最大運算結果是 5 xor 25 28.輸入 nums ...

子陣列的最大異或和

子陣列的最大異或和 陣列異或和的定義 把陣列中所有的數異或起來得到的值。給定乙個整型陣列arr,其中可能有正 有負,有零,求其中子陣列的最大異或和。輸入描述 輸出包含兩行,第一行乙個整數n 1 n 1 05 n 1 leq n leq 10 5 n 1 n 105 代表陣列arr長度,第二個n個整數...

交換兩個陣列值使兩個陣列之差最小

有兩個序列a,b,大小都為n,序列元素的值任意整數,無序 要求 通過交換a,b 中的元素,使 序列a 元素的和 與 序列b 元素的和 之間的差最小。例如 var a 100,99,98,1,2,3 var b 1,2,3,4,5,40 假設序列a,b中元素的和為sum a和sum b。假設aa和bb...