Python中检查数组元素是否连续(O(n)时间和O(1)空间)(处理正数和负数)
假设我们有一个名为nums的无序数字数组。我们必须检查它是否包含连续的值,它也应该支持负数。
因此,如果输入类似于nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3],则输出为true,因为元素为3, 4, 5, 6, 7, 8。
为了解决这个问题,我们将遵循以下步骤:
- size := nums的大小
- init_term := inf (无穷大)
- for i in range 0 to size:
- if nums[i] < init_term:
- init_term := nums[i]
- if nums[i] < init_term:
- ap_sum := ((size * (2 * init_term + (size - 1) * 1)) / 2)的商
- total := nums所有元素的和
- 如果ap_sum与total相同则返回true,否则返回false
让我们看看下面的实现,以便更好地理解:
示例
def solve(nums): size = len(nums) init_term = 999999 for i in range(size): if nums[i] < init_term: init_term = nums[i] ap_sum = (size * (2 * init_term + (size - 1) * 1)) // 2 total = sum(nums) return ap_sum == total nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3] print(solve(nums))
输入
[-3, 5, 1, -2, -1, 0, 2, 4, 3]
输出
True
广告