995 - Minimum Number of K Consecutive Bit Flips

 JAVA

  • class Solution {
        public int minKBitFlips(int[] nums, int k) {
            int n = nums.length;
            int[] d = new int[n + 1];
            int ans = 0, s = 0;
            for (int i = 0; i < n; ++i) {
                s += d[i];
                if (nums[i] % 2 == s % 2) {
                    if (i + k > n) {
                        return -1;
                    }
                    ++d[i];
                    --d[i + k];
                    ++s;
                    ++ans;
                }
            }
            return ans;
        }
    }
C++

  • class Solution {
    public:
        int minKBitFlips(vector<int>& nums, int k) {
            int n = nums.size();
            int d[n + 1];
            memset(d, 0, sizeof(d));
            int ans = 0, s = 0;
            for (int i = 0; i < n; ++i) {
                s += d[i];
                if (s % 2 == nums[i] % 2) {
                    if (i + k > n) {
                        return -1;
                    }
                    ++d[i];
                    --d[i + k];
                    ++s;
                    ++ans;
                }
            }
            return ans;
        }
    };

Comments