(LeetCode 每日一题) 2419. 按位与最大的最长子数组(数组)
题目:2419. 按位与最大的最长子数组
思路:数组,时间复杂度0(n)。
最大值一定是数组里最大的元素,小元素和大元素进行按位与得到的结果是小于大元素的。所以答案是连续的最大元素的长度。
C++版本:
class Solution {
public:int longestSubarray(vector<int>& nums) {int ans=0,ct=0,mx=nums[0];for(auto x:nums){if(x>mx){mx=x;ans=1;ct=1;}else if (x==mx){ct++;ans=max(ans,ct);}else{ct=0;}}return ans;}
};
JAVA版本:
class Solution {public int longestSubarray(int[] nums) {int ans=0,ct=0,mx=nums[0];for(var x:nums){if(x>mx){mx=x;ans=1;ct=1;}else if (x==mx){ct++;ans=Math.max(ans,ct);}else{ct=0;}}return ans;}
}
GO版本:
func longestSubarray(nums []int) int {ans,ct,mx:=0,0,nums[0]for _,x:=range nums {if x>mx {ans=1ct=1mx=x}else if x==mx {ct++ans=max(ans,ct)}else{ct=0}}return ans
}