Добрый день. Есть множество чисел по порядку от 0 до 65535, после 65535 счетчик сбрасывается. каждое значение в массиве это метка времени, соответственно в нем может быть такая ситуация [..., 65022, 12, n]. Как просчитать элементы в данном массиве, что бы на выходе получилось [..., 65022, 65547, n]
Andrey_Kanaev, надо было более чётко указать, что суть задачи - в прибавлении 65536 после того, как следующее значение меньше предыдущего. Комментаторы именно этого не понимают.
Восстановить последовательность можно только если неурезанные числа никогда не изменяются больше чем на 65535.
Один вариант решения - прибавлять к текущему числу 65536, пока оно меньше предыдущего. Можно обойтись арифметикой:
a[i] += ceil((a[i-1]-a[i])/65536)*65536
Только проверьте, что в вашем языке ceil(-0.5) даёт 0, иначе надо отдельно проверять случай, когда последовательность возрастает в начале и прибавлять ничего не надо. И ещё, тут считается, что числа в неурезанной последовательности могут повторяться. Если нет, то надо отдельно рассмотреть случай равных чисел в итоге и ещё раз прибавить 65536.