将匹配Python上的数组值加倍

2024-09-30 08:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

用于长整数值和数字的数组。我需要遍历数组中的元素,并在元素等于number时将number的值加倍。此外,可以在迭代之前对数组重新排序,以最大化number的值。需要找到最大数量

这是我不正确的代码! 任何帮助都将不胜感激

def doubnum(arr,num):
  for i in arr:
    if i==num:
    num=num*2
  return num
doubnum([1,2,4,11,12,8],2)

例如[1,2,4,11,12,8],2 should be 16的输出


Tags: 代码in元素numberfor数量if排序
3条回答

这似乎对我有用。我正在使用Python 3

代码:

def doubnum(arr,num):
  for i in arr:
    if i==num:
      num=num*2
  return num

print(doubnum([1,2,4,22,12,8],2))

这是16张

def doubnum(arr,num):
  for i in len(arr):
    if(num in arr):
       num=num*2
    else:
       return num
  return num
print(doubnum([1,2,4,11,12,8],2))

def doubnum(arr,num):
   if(num not in arr):
      return num
   else:
      num *=2
      return doubnum(arr,num)
print(doubnum([1,2,4,11,12,8],2))

在此之后,您不必担心重新排序

@Chris关于排序arr的评论首先会起作用,但在平均时间复杂度方面不必要地花费O(n logn)

如果先将给定数组转换为一个集合,然后在while循环中加倍num,直到在集合中不再找到num,则问题可以在线性时间复杂度O(n)中解决:

def doubnum(arr, num):
    pool = set(arr)
    while num in pool:
        num *= 2
    return num

因此(注意8前面的24):

doubnum([8, 1, 2, 4, 11, 12], 2)

将正确返回:16

相关问题 更多 >

    热门问题