力扣995.K连续位的最小翻转次数
力扣995.K连续位的最小翻转次数
-
因为翻转顺序改变不影响最终结果
- 因此从头找每个位置翻转后的结果
- 如果为0 将从它开始的K长的数组翻转
-
class Solution { public: int minKBitFlips(vector<int>& nums, int k) { int n = nums.size(); vector<int> s(n+1); int res=0,cnt=0; for(int i=0;i<n;i++) { cnt += s[i]; // 差分记录每个位置的翻转次数 if((nums[i] + cnt) % 2 == 0) //需要翻转 { if(i + k > n) return -1; //i + k - 1 == n时不足k位 res ++; cnt ++; //相当于s[i] ++; s[i+k] --; //s[i+k-1+1] --; } } return res; } };
原文地址:https://blog.csdn.net/Pisasama/article/details/140323919
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!