用于添加或减去以生成排序数组的最小值

时间:2014-09-18 01:35:53

标签: ruby arrays sorting

给定一个整数数组,我想找到最小数x,以便在数组中增加或减少0x范围内的数字将导致数组按升序排序。

例如,对于[5,4,3,2,8]x的最小值为3。这是因为[2,3,4,5,8]可以通过0123增加或减少每个元素来获得:

5-3 = 2
4-1 = 3
3+1 = 4
2+3 = 5
8+0 = 8

假设我们有一个更复杂的数组,如[52,71,36,92,48]。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

a = [52, 71, 36, 92, 48]
b = a.map.with_index{|e, i| e - i}
((b.max - b.min) / 2.0).ceil
# => 28