題目連結(jié):
題目意譯:
你被給定一個(gè)大小為 n 的整數(shù)陣列 nums。
考慮 nums 中一個(gè)非空子陣列,其有著最大可能的按位元(Bitwise)AND 之值。
換句話說(shuō),令 k 為 nums 中任一子陣列的最大按位元 AND 之值。則,只有按位元 AND 之值等於 k 的子陣列需要被考慮。
回傳此種子陣列最長(zhǎng)者之長(zhǎng)度。
一個(gè)陣列按位元 AND 之值為當(dāng)中所有數(shù)字按位元 AND 之結(jié)果。
一個(gè)子陣列為一個(gè)陣列中的一個(gè)連續(xù)元素序列。
限制:
1 ≦ nums.length ≦ 10 ^ 5
1 ≦ nums[i] ≦ 10 ^ 6
範(fàn)例測(cè)資:
範(fàn)例 1:
輸入: nums = [1,2,3,3,2,2]
輸出: 2
解釋:
一個(gè)子陣列最大可能的按位元 AND 之值為 3。
有著該值的最長(zhǎng)子陣列為 [3,3],所以我們回傳 2。
範(fàn)例 2:
輸入: nums = [1,2,3,4]
輸出: 1
解釋:
一個(gè)子陣列最大可能的按位元 AND 之值為 4。
有著該值的最長(zhǎng)子陣列為 [4],所以我們回傳 1。
解題思維:
可以看到最大的按位元 AND 之值會(huì)是 nums 中的數(shù)字最大值(稱其為 M)。
因此我們只要找到 nums 中 M 最多連續(xù)出現(xiàn)幾次即可求得所求最長(zhǎng)子陣列。
此次分享到此為止,如有任何更加簡(jiǎn)潔的想法或是有說(shuō)明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。