Codingbat热身运动阵列123

时间:2017-11-28 07:52:24

标签: python arrays for-loop if-statement

我是编程新手,并试图从codingbat.com处理这个解决方案。

  

给定一个int数组,如果数字1,2,3的序列出现在某个数组中,则返回True。

这是解决方案:

def array123(nums):
  # Note: iterate with length-2, so can use i+1 and i+2 in the loop
  for i in range(len(nums)-2):
    if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
      return True
  return False

但为什么(len(nums)-2)被使用?它与我们开始for-in循环的位置有关吗?

我似乎无法在网上找到答案,希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:0)

循环在len(nums)-2结束,因为三个整数无法从数组中的最后三个项开始。因此,对于最后两个数组项,不必检查是否存在序列。

答案 1 :(得分:0)

一种稍有不同的解决方案,您不必担心len(nums)-2问题:

def array123(nums):
    for i in range(len(nums)):
        if nums[i:i+3]==[1,2,3]:
            return True
    return False