码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode-995 Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数)

时间:2019-02-17 12:29:41      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:solution   ems   div   最小   number   int   memset   else   code   

 1 #define maxn 30002
 2 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
 3 int dir[maxn],f[maxn],n;
 4 class Solution
 5 {
 6     public:
 7         int solve(int k)
 8         {
 9             memset(f,0,sizeof(f));
10             int sum=0,res=0;
11             for(int i=0; i+k<=n; i++)
12             {
13                 if((dir[i] + sum) %2== 1)
14                 {
15                     f[i]=1;
16                     res++;
17                 }
18                 sum+=f[i];
19                 if(i-k+1>=0) sum-=f[i-k+1];
20             }
21             
22             for(int i=n-k+1; i<n; i++) 
23             {
24                 if((dir[i] + sum) %2== 1) return -1;
25                 if(i-k+1>=0) sum-=f[i-k+1];
26             }
27             return res;
28         }
29 
30         int minKBitFlips(vector<int>& A, int K)
31         {
32             n = A.size();
33             _for(i,0,n)
34                 if(A[i])
35                     dir[i] = 0;
36                 else
37                     dir[i] = 1;
38             return solve(K);
39         }
40 };

经典ACM问题——奶牛掉头

Leetcode-995 Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数)

标签:solution   ems   div   最小   number   int   memset   else   code   

原文地址:https://www.cnblogs.com/Asurudo/p/10390647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!