在Python中查找降低并重新排列后的最大元素的程序
假设我们有一个名为arr的数组。 我们必须对arr执行一些操作,以使其满足以下条件−
- arr中的第一个元素必须为1。
-
两个相邻元素之间的绝对差必须最多为1。
有两种操作。 我们可以执行这两种类型的操作任意次数−
- 将arr的任何值减少到较小的正数。
-
重新排列arr的元素以任意顺序排列。
我们必须找到执行操作以满足给定条件后arr中可能的最大值。
因此,如果输入如下arr = [3,3,2,3,2],则输出将为3,因为我们可以将最后一个元素减少到1,然后将它们重新排列为[1,2,3,3,3],最大值为3。
要解决此问题,我们将遵循以下步骤−
- 对列表arr进行排序
-
arr [0]:= 1
-
for i in range 1 to size of arr – 1, do
- arr [i]:=(arr [i-1] +1)和arr [i]的最小值
- 返回arr中的最大值
例子
让我们查看下面的实现,以获得更好的理解−
def solve(arr):
arr.sort()
arr [0] = 1
for i in range(1,len(arr)):
arr [i] = min(arr [i-1] +1,arr [i])
return max(arr)
arr = [3,3,2,3,2]
print(solve(arr))
输入
[3,3,2,3,2]
输出
3