[
greedy
array
]
BinarySearch 0564 Making Pairwise Adjacent Sums Small
Problem statement
https://binarysearch.com/problems/Making-Pairwise-Adjacent-Sums-Small/
Solution
The idea is to start from the left and use greedy strategy. First of all, for pair [0, 1] we have choice: decrease 0 or 1 and it is always better to decrease 1. Then on the next step for pair [1, 2] if it is already <= k we do nothing, if it is > k, then we decrease 2-th element and so on.
Complexity
It is O(n) for time and O(1) for space.
Code
class Solution:
def solve(self, nums, k):
ans, M = 0, 10 ** 9 + 7
for i in range(1, len(nums)):
steps = nums[i] + nums[i - 1] - k
if steps > 0:
ans += steps
nums[i] = max(0, nums[i] - steps)
return ans % M