@@ -18,14 +18,14 @@ class TrieNode:
1818 """Node of the Bitwise Trie."""
1919
2020 def __init__ (self ) -> None :
21- self .child : list [TrieNode | None ] = [None , None ] # child[0] for bit 0, child[1] for bit 1
21+ self .child : list [TrieNode | None ] = [None , None ]
2222
2323
2424class BitwiseTrieMaxXOR :
2525 """
2626 Use:
27- solver = BitwiseTrieMaxXOR()
28- result = solver.find_maximum_xor(nums)
27+ solver = BitwiseTrieMaxXOR()
28+ result = solver.find_maximum_xor(nums)
2929 """
3030
3131 def __init__ (self ) -> None :
@@ -40,11 +40,11 @@ def insert(self, num: int) -> None:
4040 >>> trie.insert(10)
4141 """
4242 node = self .root
43- for i in range (31 , - 1 , - 1 ): # 32-bit integers
43+ for i in range (31 , - 1 , - 1 ):
4444 bit = (num >> i ) & 1
45- if not node .child [bit ]:
45+ if node .child [bit ] is None :
4646 node .child [bit ] = TrieNode ()
47- node = node .child [bit ]
47+ node = node .child [bit ] # type: ignore[misc]
4848
4949 def query_max_xor (self , num : int ) -> int :
5050 """
@@ -69,10 +69,11 @@ def query_max_xor(self, num: int) -> int:
6969 for i in range (31 , - 1 , - 1 ):
7070 bit = (num >> i ) & 1
7171 toggle = 1 - bit
72- if node .child [toggle ]:
72+ if node .child [toggle ] is not None :
7373 max_xor |= 1 << i
7474 node = node .child [toggle ]
7575 else :
76+ assert node .child [bit ] is not None
7677 node = node .child [bit ]
7778 return max_xor
7879
@@ -111,11 +112,16 @@ def find_maximum_xor(self, nums: list[int]) -> int:
111112 print ("All doctests passed!" )
112113
113114 # Manual test suite
114- print ("\n ************ Manual Testing Bitwise Trie Maximum XOR Algorithm ************\n " )
115+ print (
116+ "\n ************ Manual Testing Bitwise Trie Maximum XOR Algorithm "
117+ "************\n "
118+ )
119+
115120 test_cases = [
116121 ([3 , 10 , 5 , 25 , 2 , 8 ], 28 ),
117122 ([42 ], 0 ),
118- ([0xFFFFFFFF , 0 ], 0xFFFFFFFF ),
123+ ([8 , 1 ], 9 ),
124+ ([0 , 0 , 0 ], 0 ),
119125 ([7 , 7 , 7 ], 0 ),
120126 ([1 , 2 , 3 , 4 , 5 ], 7 ),
121127 ([16 , 8 , 4 , 2 , 1 ], 24 ),
@@ -130,4 +136,3 @@ def find_maximum_xor(self, nums: list[int]) -> int:
130136 assert result == expected , f"Testcase { idx } failed!"
131137
132138 print ("\n All manual test cases successfully passed!" )
133- print ("********** End of Testing Bitwise Trie Maximum XOR Algorithm **********" )
0 commit comments