Python 中检查数组是否“漂亮”


假设我们有一个包含唯一元素的数组 nums。我们必须检查这些条件是否满足。

  1. 元素范围为 1 到 n。
  2. 数组不能按升序排序。

因此,如果输入类似于 nums = [2,6,1,5,3,4],则输出为 True。

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

  • n := nums 的大小
  • total := nums[0]
  • is_sorted := True
  • 对于范围 1 到 n - 1 中的 i,执行:
    • 如果 nums[i] 与 nums[i - 1] 相同,则:
      • 返回 False
    • 如果 nums[i] < nums[i - 1],则:
      • is_sorted := False
    • total := total + nums[i]
  • 如果 is_sorted 为真,则:
    • 返回 False
  • 如果 total 等于前 n 个数字的总和,则返回 true,否则返回 false

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

示例代码

在线演示

def solve(nums):
   n = len(nums)
   
   total = nums[0]
   is_sorted = True
   
   for i in range(1,n):
      if nums[i] == nums[i - 1]:
         return False
  
      if nums[i] < nums[i - 1]:
         is_sorted = False
      total += nums[i]
   
   if is_sorted:
      return False
  
   return total == (n * (n + 1) // 2)
 
nums = [2,6,1,5,3,4]
print(solve(nums))

输入

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

输出

True

更新于:2021年1月15日

489 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告