检查数组元素在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