我正在对列表进行排序,而实际上提示是在询问输入数字的顺序。如果其他人犯了同样的错误,不会删除帖子。
我想通过说我已经阅读过这个难题的其他答案来作为序言,但无济于事。我甚至尝试复制提供的解决方案,只是为了看看它们是否真的有效,而且他们的测试用例比我使用的代码更多。
“写一个函数答案(l),它取一个正整数列表l并计算列表索引满足要求i(j,k)的(li,lj,lk)的”幸运三元组“的数量l的长度介于2和2000之间.l的元素介于1和999999之间。答案符合有符号的32位整数。有些列表是故意生成的,没有任何访问代码来抛弃间谍,所以如果没有找到三元组,则返回0.
“幸运三元组”是元组(x,y,z),其中x除以y,y除以z,例如(1,2,4)。
例如,[1,2,3,4,5,6]具有三元组:[1,2,4],[1,2,6],[1,3,6],作出答案总共3个。“
此时,我甚至都没有要求解决方案,所以我可以进入下一个级别,因为我觉得我在那时作弊,但是,我不知道为什么我在测试用例3-5中失败了(显然测试用例不公开,但我只是问是否有人能在我的编程中找到缺陷)。
就像我确信大多数人一样,我开始创建一个三重for循环,迭代所有可能的“三重”,但看到它是O(n ^ 3),花了太长时间。但是,我将其用作我的代码的“基础解决方案”,以便将答案与更复杂的案例进行比较。
如果代码有点乱,我很抱歉,但我是python的新手,主要是为学习机会做了这个挑战,只是为了我的大脑。
该函数接受一个列表l,然后我按降序排序。然后我创建一个列表,我将所有值初始化为0.对于第一个while循环集,我计算“双精度”的数量,其中l [y]均匀地划分l [x],然后计算l的因子数量[x]有。即如果有列表[1,2,3,4],则此循环检查[3%2],[3%1],[2%1]。
下一个while循环集检查前2个数字([4%3],[4%2],[3%2])。这两个循环都在我的(本地)代码中使用print语句进行验证,这些是发生的操作。如果第二个while设置中的mod为true,那么它会将计数器增加'Y'值所具有的因子数量(在这种情况下,只有[4%2]为真,然后它将转到l_count列表并将count变量增加数组中对应于2的值。在这种情况下,它是1,因为第一个while循环中数字“2”的唯一真实情况是[2%1])。我会在我的代码中包含注释,但我认为我不会首先遇到这个问题。
无论如何,任何帮助将不胜感激!谢谢
l.sort()
l = l[::-1]
length = len(l)
count = 0
l_count = []
for x in range(len(l)):
l_count.append(0)
x = 1
while x < (length - 1):
y = x + 1
while y < length:
if l[x] % l[y] == 0:
l_count[x] = l_count[x] + 1
y = y + 1
x = x + 1
x = 0
while x < (length - 2):
y = x + 1
while y < (length - 1):
if l[x] % l[y] == 0:
count = count + l_count[y]
y = y + 1
x = x + 1
return count
答案 0 :(得分:0)
你做的第一件事就是错误:排序。这会让你报告[6,5,4,3,2,1]有三个这样的三元组(与例子相同),而实际上它没有任何三元组。
(鉴于您通过了五项测试中的两项,我可以想象这是您唯一的错误。也许这些测试已经排序,因此您不会搞砸这些测试。)