精華區beta Marginalman 關於我們 聯絡資訊
今天的有比這個月初那些比起更難,開始變難了 題目: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; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.20.227 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1726276287.A.517.html
DJYOMIYAHINA: 大師 09/14 10:36
dont: 大師 09/14 18:02