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