2419. 按位与最大的最长子数组
Problem: 2419. 按位与最大的最长子数组
文章目录
- 思路
- 解题过程
- 复杂度
- Code
思路
按位异或只会让数值越来越小,因此最长的连续按位与的最大值只存在于连续最大值中。
解题过程
遍历数组取出最大值,再遍历找到每一次连续最大值,从中取出最长的连续最大值数组。
复杂度
- 时间复杂度: O(n)O(n)O(n)
- 空间复杂度: O(n)O(n)O(n)
Code
class Solution {
public:int longestSubarray(vector<int>& nums) {int n = nums.size();int amax = -1;for (int i = 0; i < n; i++) {amax = max(amax, nums[i]);}int ans = 0;int bmax = 0;for (int i = 0; i < n; i++) {if (nums[i] == amax) {ans++;}bmax = max(bmax, ans);if (nums[i] != amax) {ans = 0;}}return bmax;}
};