检查给定的数组是否在Python中几乎排序(元素最多相距一个位置)

假设我们有一个称为nums的数字数组,其中所有元素都是唯一的。我们必须检查nums是否几乎已排序。众所周知,当数组中的任何元素出现在距其在数组中的原始位置最多1距离处时,数组几乎都将被排序。

因此,如果输入类似于nums = [10,30,20,40],则输出将为True,因为10放置在其原始位置,而所有其他元素距离其实际位置最多在一个位置。

示例

让我们看下面的实现以更好地理解-

def solve(nums):
   i = 0
   while i < len(nums) - 1:
      if nums[i] > nums[i + 1]:
         nums[i], nums[i + 1] = nums[i + 1], nums[i]
         i += 1
      i += 1
   for i in range(len(nums) - 1):
      if nums[i] > nums[i + 1]:
         return False
   return True
nums = [10, 30, 20, 40]
print(solve(nums))

输入值

[10, 30, 20, 40]
输出结果
True

猜你喜欢