在Python中检查数组是否排序且旋转

在Python中检查数组是否排序且旋转

假设我们有一个名为nums的数组,我们必须检查数组最初是否按非降序排序,然后将其旋转了一些位置(可能为零)或未旋转。 数组中也可能存在重复项。

因此,如果输入为nums = [12,15,2,5,6,9],则输出为True,因为它向右旋转了两个位置。

为了解决这个问题,我们将遵循以下步骤:

  • j:=0

  • while j < nums大小 – 1 且 nums [j] <= nums [j + 1],执行

    • j := j + 1
  • res:=(从索引j + 1到nums结尾的nums子数组)连接(索引0到nums j的子数组)

  • for i in range 0 to size of res – 1, do

    • if res [i] > res [i + 1],则
      • 返回False
  • 返回True

示例(Python)

让我们看一下以下实现以更好地理解:

def solve(nums):
    j = 0
    while (j < len(nums) - 1 and nums[j] <= nums[j + 1]):
        j += 1
    res = nums[j + 1:len(nums)] + nums[0:j + 1]
    for i in range(len(res) - 1):
        if res[i] > res[i + 1]:
            return False
    return True

nums = [12,15,2,5,6,9]
print(solve(nums))

输入

[12,15,2,5,6,9]

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程