用 Python 编写程序检查右旋转形式是否为前 n 个自然数递增或递减数组

pythonserver side programmingprogramming更新于 2026/1/3 11:24:17

假设我们有一个名为 nums 的数字列表,其中有 n 个元素。我们必须检查是否可以通过将 nums 向右移动任意次数,以递增或递减的方式创建一个包含前 n 个自然数的列表,例如 [1, 2, ..., n] 或 [n, n - 1, ..., 1]。

因此,如果输入为 nums = [5,6,1,2,3,4],则输出将为 True,因为我们可以将它们移动四次以形成数组 [1,2,3,4,5,6]

要解决这个问题,我们将遵循以下步骤 −

  • n := nums 的大小
  • 对于范围为 1 到 n - 1 的 i,执行
    • 如果 |nums[i - 1] - nums[i]| 不为 1 且 |nums[i - 1] - nums[i]|不为 n-1,则
      • 返回 False
  • 返回 True

示例

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

def solve(nums):
   n = len(nums)
   for i in range(1, n):
      if abs(nums[i - 1] - nums[i]) != 1 and abs(nums[i - 1] - nums[i]) != n - 1:
         return False
   return True

nums = [5,6,1,2,3,4]
print(solve(nums))

输入

[5,6,1,2,3,4]

输出

True

相关文章


有用资源