检查数组元素在O(n)时间和O(1)空间中是否连续(处理正数和负数)
假设我们有一个称为nums的未排序数字数组。我们必须检查它是否包含连续的值,它也应该支持负数。
因此,如果输入像nums=[-3、5、1,-2,-1、0、2、4、3],则输出为true,因为元素为3、4、5、6,7、8
为了解决这个问题,我们将遵循以下步骤-
大小:=数字的大小
init_term:=inf
对于介于0到大小范围内的i,执行
init_term:=nums[i]
如果nums[i]<init_term,则
ap_sum:=[[size*(2*init_term+(size-1)*1))/2)的商
总数:=num的所有元素的总和
当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