检查给定的数组在Python中是否几乎已排序(元素最多相隔一个位置)
假设我们有一个名为nums的数字数组,其中所有元素都是唯一的。我们必须检查nums是否几乎已排序。众所周知,当任何元素最多与其在已排序数组中的原始位置相隔1个距离时,数组几乎已排序。
因此,如果输入类似于nums = [10, 30, 20, 40],则输出将为True,因为10位于其原始位置,所有其他元素最多与其实际位置相隔一个位置。
为了解决这个问题,我们将遵循以下步骤:
- i := 0
- 当i < nums的大小 - 1时,执行
- 如果nums[i] > nums[i + 1],则
- 交换nums[i]和nums[i + 1]
- i := i + 1
- i := i + 1
- 如果nums[i] > nums[i + 1],则
- 对于i从0到nums的大小 - 1,执行
- 如果nums[i] > nums[i + 1],则
- 返回False
- 如果nums[i] > nums[i + 1],则
- 返回True
示例
让我们看看下面的实现来更好地理解:
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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP