Как просчитать минимальные шаги, в результате которого, числа внутри массива будут упорядочены по возрастанию

вопрос из задачника, никак не пойму, что нужно сделать
дан массив из чисел, в каждом шаге можно прибавить +1, нужно найти минимальное количество шагов при котором числа в массиве будут по возрастанию, на пример։ x=[1,1,1]
этот массив можно сортировать по возрастанию тремя шагами :

  1. x=[1,1,1]

  2. x=[1,2,2]

  3. x=[1,2,3]
    нужно написать функцию которое получает массив и возвращает необходимое количество шагов, при котором числа внутри отсортированы по возрастанию.
    Всего есть четыре варианта :

на входе:[1,1,1], на выходе:3

на входе:[-1000,0,-2,0], на выходе:5

на входе:[2,1,10,1], на выходе:12

на входе:[2,3,3,5,5,5,4,12,12,10,15], на выходе:13

function solution(x){ let count=0 for(i=0;i<x.length;i++){ if(x[i]<=[i]){ count++ } } return count //мой вариант кода }

Алгоритм такой. Берешь i-e число из массива и берешь i-1 число из массива. Смотришь которое больше, идут ли они в возрастающем порядке. Считаешь на сколько нужно изменить число чтобы они шли в возрастающем порядке. Меняешь число в массиве и уже измененное число сравниваешь со следующим из массива. Сумма этих “на сколько нужно изменить” и будет ответом.

function getSteps(arr) {
	//  делаем копию массива чтобы наши изменения массива
	//  не повлияли на значения в массиве из аргумента
	var arrCopy = arr.slice() 
	var steps = 0
	// начинаем со второго элемента массива, и "оглядываемся"
	// на предыдущий. Сравниваем числа чтобы понять в порядке
	// возрастания ли они и на сколько нужно изменить
	// рассматриваемое число чтобы понять чтобы 
	for (var i = 1; i < arrCopy.length; i += 1) {
		var prev = arrCopy[i-1]
		var current = arrCopy[i]
		if (current > prev) {
			// ничего не надо делать, числа уже в
			// возрастающем порядке
		} else {
			// считаем на сколько числа разнятся. Эта разница + 1 и
			// будет количество шагов за сколько можно изменить значение
			var diff = prev - current + 1
			// Для массива [10, 8] разница будет 2, добавляем 1 и
			// получаем что к 8 нужно добавить 3 (в соответственно
			// 3 шага из + 1 чтобы число стало гарантированно больше 10)
			steps += diff
			// Заменяем число в копии массива чтобы на следующей
			// итерации работать уже с ним а не с оригинальным
			arrCopy[i] = current + diff
		}
	}
	return steps
}