O(n) Greedy One Pass Solution
Intuition\n Describe your first thoughts on how to solve this problem. \nI felt like this problem was tricky and it took me awhile to realize some essential tip
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\nI felt like this problem was tricky and it took me awhile to realize some essential tips to help solve it. \n\nTricks to Solve this Problem. \n-I realized to find the absolute min of the array, you take each element and & it with the one before. \n\n-& two elements will always result in the min of the two elements or something smaller.\n\n-If the min of the array isn\'t 0 then return it. We do this because if the min isn\'t zero it is impossible to create a sum to equate to that with the array. The smaller amounts of the array will always be at a minimum the min of the array so adding them will surpass the min of the array. \n\nNow iterate through the array and & the current element with the previous. Do this until you get a value equal to minArry. Then create a new group and continue until you are at the end of the array. Return the amount of groups -1 since we either added a group at the end (if the last element made the group equal to minArry) or the last group never equaled minArry(so it must be merged with the previous group which did equal minArry).\n```\nclass Solution:\n    def maxSubarrays(self, nums: List[int]) -> int:\n        minArry, prev = nums[0], 2**32-1\n        length, groups = len(nums), 1\n        for num in nums[1:]:\n            minArry &= num\n        if minArry: return 1\n        \n        for idx, num in enumerate(nums):\n            prev &= num\n            if prev == minArry:\n                groups += 1\n                prev = 2**32-1\n        return groups -1\n```
['Python3']