首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改进这个Python挑战的答案?(阵列,切片)

如何改进这个Python挑战的答案?(阵列,切片)
EN

Stack Overflow用户
提问于 2022-07-06 15:52:08
回答 1查看 56关注 0票数 1

挑战被描述为:有一个长度为N的数组A带有整数,在这个数组中,我们希望找到具有最大差异的一对元素的第一个元素,例如,给定A= 1, 2,5,6,第一个元素是2,或者A1,因为5-2=3。

更正式地说,对的第一个元素是P,第二个元素是Q和0

我的快速解决方案得分很低:

代码语言:javascript
复制
def solution(A):
    candidate = 0
    saved_diff = 0
    for elems in range(0, len(A)-1):
        if A[elems] < A[elems+1]:
            diff = A[elems+1] - A[elems]
            if diff > saved_diff:
                candidate = elems
                saved_diff = diff
    return candidate

我很好奇如何才能改进这一点?我是否应该考虑找出所有可能存在相同差异的配对?计算效率低吗?我不是在报道一些特殊的边缘案件吗?

EN

回答 1

Stack Overflow用户

发布于 2022-07-06 16:07:46

如果列表是无序的,我相信你找到了最好的解决方案,因为你必须检查每个数字及其O(n)。

在我看来,唯一没有必要的是if A[elems] < A[elems+1]:

如果列表是有序的,您必须从右到左检查和:if L[x]-L[X-1] > L[X-2] (在其中X in range(len(L)[::-1]),您可以停止搜索,因为您不可能找到更大的号码。

(如果您有负数,逻辑是相同的,但您必须稍微更改检查)

也许还有更好的优化,但我的数学不是那么好。

很酷的问题,这让我想,谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72886569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档