zoukankan      html  css  js  c++  java
  • Leetcode-995 Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数)

     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问题——奶牛掉头

  • 相关阅读:
    2017.4.6下午
    2017.4.6上午
    2017.3.31下午
    2017.4.5下午
    2017.4.5上午
    2017.4.1上午
    2017.3.31上午
    2017.3.28下午
    2017.3.28上午
    3.28上午
  • 原文地址:https://www.cnblogs.com/Asurudo/p/10390647.html
Copyright © 2011-2022 走看看