// // 根據圖進行理解
// 題目中說到最大數小於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...