在Python中减少和重新排列后查找最大元素的程序
假设我们有一个名为arr的数组。我们必须对arr执行一些操作,以便它满足这些条件-
arr中的第一个元素必须是1。
任意2个相邻元素之间的绝对差值最多为1。
并且有两个操作。我们可以多次执行这两种类型的操作-
将arr的任何值减小到较小的正数。
将arr的元素重新排列为任意顺序。
我们必须在执行操作后找到arr中的最大可能值以满足给定条件。
因此,如果输入类似于arr=[3,3,2,3,2],那么输出将是3,因为我们可以将最后一个元素减少到1,然后像[1,2,3,3一样重新排列它们,3],最大值为3。
示例
让我们看看以下实现以获得更好的理解-
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