Wednesday, September 5, 2018

[LeetCode]Bitwise ORs of Subarrays


假设输入数组为A,我们用dp[i]表示以A[i]结尾的最优子数组的所有bitwise or的值。那么dp[i] = A[i] | x, 其中x是dp[i - 1]的其中一个值。那么我们维护一个hashset即可。由于子数组每扩大一次,出现新数的可能只有出现之前没有出现的位,所以hashset所需的空间最多也就O(log m),其中m为A中最大的数。时间空间复杂度均为O(n * log m),其中n为输入数组的长度。代码如下:


No comments:

Post a Comment