Re: [闲聊] 每日leetcode

楼主: enmeitiryous (enmeitiryous)   2024-09-14 09:11:25
今天的有比这个月初那些比起更难,开始变难了
题目:2419. Longest Subarray With Maximum Bitwise AND
给你一个整数组成的vector,求出maximum bitwise AND的subarray
思路:
和maximum subarray sum dp做法很像,其实可以发现绝对不会有nums[i]&cur比当前
maximum最大的情况发生,所以我们要做的事就是比较maximum和nums[i]的大小,决定
是否更新maximum和maxlen,如果maximum=cur&nums[i]则更新长度,若cur&nums[i]比较
小则代表目前最大的cur会是需要更新成nums[i],前面也有些做法是先找出vector中的最
大元素再左右找到使最长subarray长
int longestSubarray(vector<int>& nums) {
int cur=nums[0];
int curlen=0;
int mxl=0;
int mx=cur;
for(int i=0;i<nums.size();++i){
if(nums[i]>mx){
curlen=1;
mxl=1;
mx=nums[i];
cur=mx;
}
else if((nums[i]&cur)==mx){
curlen++;
mxl=max(curlen,mxl);
}
else{
cur=nums[i];
curlen=1;
}
}
return mxl;
}
作者: DJYOMIYAHINA (通通打死)   2024-09-14 10:36:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com