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

    猜你喜欢