這題真的是對mask的理解升華了
還有一個要注意的是xor的意義辟躏。我一直覺得做一個operation需要兩個數(shù)适瓦,要save一個之前的奸鬓,再apply到當前的數(shù)焙畔。
但是這題不用。
利用了異或的”自反性“: a ^ b = c串远,而a ^ b ^ b = a, 則 c ^ b = a
太牛逼了宏多。。抑淫。绷落。
有幾個important things I was missing.
1. HashSet每輪declare一次。
2.我們?yōu)槭裁磸淖蟮接乙@么做始苇。
首先我們的temp是從left most significant bit開始設置的。也就是一開始為100000000000
第二次也許是01000000000 筐喳, 也有可能是11000000000[如果上一輪 set里存在兩個數(shù)的first bit不一樣的話]催式。
越多differ的bit between two numbers函喉, 越多的1由于xor。那么如果這些1出現(xiàn)在left side荣月,結果會越大管呵。