假设我们有一个称为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