编码蝙蝠(Python> List-2> has22)

时间:2015-03-12 01:30:28

标签: python

link

答案是

def has22(nums):
  for i in range(0, len(nums)-1):
    #if nums[i] == 2 and nums[i+1] == 2:
    if nums[i:i+2] == [2,2]:
      return True    
  return False

我不明白为什么会出现" -1"在len(nums)之后。这个问题可能与代数有关......

5 个答案:

答案 0 :(得分:1)

您开始计算数字为0的数组,因此数组中的第一个元素是第0个元素。

如果数组有三个元素a,b,c。索引为0,1,2但长度为3。

因此: 如果你想循环遍历你想要的所有索引

  

0..2

  

0 ..长度 - 1

答案 1 :(得分:1)

def has22(nums):
  istwo=0
  for i in nums:
    if i==2:
      if istwo:
        return True
      else:
        istwo=1
    else:
      istwo=0
  return False

我认为 FLAGS 是解决此类问题的更好{更人性化的}解决方案。它也很简单。

答案 2 :(得分:0)

def has22(nums):   如果len(nums)< 2:       返回False

表示范围内的i(0,len(nums)-1):       nums [i] == 2和nums [i + 1] == 2:           如果nums [i] == 2和nums [i + 1] == 2:               返回True               i + = 1           其他:               返回False               i + = 1

表示范围内的i(0,len(nums)-1):       如果nums [i]!= 2和nums [i]!= 2:           返回False

答案 3 :(得分:0)

def has22(nums):
  i = 0
  while i < len(nums) -1:
    return (nums[i] == 2 and nums[i+1] == 2) or (nums[i-1] == 2 and nums[i-2] == 2) or (nums[i-2] == 2 and nums[i-3] == 2)
  if len(nums) < 2:
    return False

答案 4 :(得分:0)

更具可读性的解决方案:

def has22(nums):
  if not nums or len(nums) == 1: return False
  prev = None
  for i, number in enumerate(nums):
    if number == prev: return True
    prev = number
  return False