Python 中检查数组是否“漂亮”
假设我们有一个包含唯一元素的数组 nums。我们必须检查这些条件是否满足。
- 元素范围为 1 到 n。
- 数组不能按升序排序。
因此,如果输入类似于 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]
- 如果 nums[i] 与 nums[i - 1] 相同,则:
- 如果 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
广告