作者oin1104 (是oin的說)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Sun Nov 10 14:07:31 2024
題目
找一段最短的陣列裡面 | 全部的值至少k
思路
其實想蠻久的
最後是紀錄裡面的每個位子的bit數量
然後sliding window
找到每個至少k值的長度
```cpp
class Solution {
public:
vector<int> nums;
int n ;
int k ;
int val(vector<long long>& now)
{
int res = 0;
for(int i = 0 ; i < 32 ; i ++)
{
if(now[i])res += pow(2,i);
}
return res;
}
int minimumSubarrayLength(vector<int>& nums2, int k2)
{
nums = nums2;
k = k2;
n = nums.size();
int res = INT_MAX;
vector<long long> paper(32,0);
int i = 0;
int l = 0;
for(i = 0 ; i < n ; i ++ )
{
for(int t = 0 ; t < 31 ; t ++)
{
if(nums[i] & (int)pow(2,t))paper[t] ++;
}
vector<long long> paper2 = paper;
for(int t = 0 ; t < 31 ; t ++)
{
if(nums[l] & (int)pow(2,t))paper2[t] --;
}
while(val(paper2) >= k && l<i)
{
l++;
paper = paper2;
for(int t = 0 ; t < 31 ; t ++)
{
if(nums[l] & (int)pow(2,t))paper2[t] --;
}
}
if(val(paper) >= k)res = min ( res , i-l+1);
}
if(res == INT_MAX)return -1;
return res;
}
};
```
--
邊版的小母雞 — fuckchicken
https://i.imgur.com/wglAuYR.jpg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.167.248 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1731218853.A.5CD.html
推 Sougou: 純軟還是可能拿到38k待遇,別卷了 11/10 14:10
推 Meaverzt: 大師 11/10 14:12
→ Meaverzt: 剩我寫出一坨答辯不敢發了 11/10 14:12
推 mrsonic: 甚麼時候送我禮物 11/10 14:17
推 sustainer123: 養我 11/10 14:18
→ oin1104: 沒關係 38k還是比文組高 11/10 14:21
→ oin1104: 文組太苦了 11/10 14:22