classSolution(object): defgetDiff(self, A): diff = [0] * len(A) for i inrange(len(A)): diff[i] = A[0] if i == 0else A[i] - A[i-1] return diff
defminKBitFlips(self, A: List[int], K: int) -> int: length = len(A) diff = self.getDiff(A) cur = 0 i, cnt = 0, 0 while i < length - K + 1: ifnot (cur + diff[i]) & 1: cnt += 1 diff[i] += 1 if i + K < length: diff[i+K] -= 1 cur += diff[i] i += 1 while i < length: cur += diff[i] i += 1 ifnot cur & 1: return -1 return cnt
N = len(A) res = 0 left, right = 0, 0 zeros = 0 while right < N: if A[right] == 0: zeros += 1 while zeros > K: if A[left] == 0: zeros -= 1 left += 1 res = max(res, right - left + 1) right += 1 return res
classSolution: deflongestSubarray(self, nums, limit): r = l = res = 0 min_q = collections.deque() max_q = collections.deque() for num in nums: whilelen(min_q) and num < min_q[-1]: min_q.pop() whilelen(max_q) and num > max_q[-1]: max_q.pop() min_q.append(num) max_q.append(num) r += 1; while max_q[0] - min_q[0] > limit: if min_q[0] == nums[l]: min_q.popleft() if max_q[0] == nums[l]: max_q.popleft() l += 1 res = max(res, r - l) return res