【问题标题】:Need help in Python hackerrank problem solving需要帮助解决 Python hackerrank 问题
【发布时间】:2021-11-04 00:58:54
【问题描述】:

所以,我被一个问题困住了,我不确定我的代码做错了什么。

问题是- 给定一个整数数组,找出任意两个元素之间的绝对差小于或等于 的最长子数组。 示例a = [1,1,2,2,4,4,5,5,5]
有两个符合条件的子数组: 和 .
最大长度子数组有元素。
[1,1,2,2][4,4,5,5,5]

返回 int:符合条件的最长子数组的长度

或访问链接Hackerrank Problem

def pickingNumbers(a):
    a.sort()
    answer = 0
    flag = False
    for i in range(len(a)-1,1,-1):
        count = 0
        temp = [list(l) for l in list(itertools.combinations(a,i))]
        for j in temp:
            for k in range(len(j)-1):
                if abs( j[k+1] - j[k] ) <= 1:
                    count +=1
            if count == len(j):
                answer = len(j)
                break

【问题讨论】:

标签: python list data-structures dsa


【解决方案1】:

请注意,该语句要求您查找子数组,而不是子序列。子数组是来自父数组的连续元素链。在这里,通过对数组进行排序,只要给您的数组升序,您就会破坏父数组的顺序。因此你的程序会给出错误的输出

【讨论】:

  • 那么我应该尝试自己制作子数组还是组合对象可以?
  • 数组一开始不要排序,对i和j从1到n迭代两次循环来制作子数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多