【问题标题】:Array rearrange. All lesser than a on the left of a. All greater than a on the right of a数组重新排列。都小于 a 左边的 a。 a 的右边都大于 a
【发布时间】:2020-07-03 11:45:38
【问题描述】:

我想重新排列我的数组 A,以便列表中大于任意数字 a 的所有元素都位于 a 的右侧strong>,所有小于 a 的元素都将位于 a 的左侧。

例子

A = [4,5,1,2]
a = A[0] #4

Output:

[1,2,4,5]
or
[2,1,4,5]

我试图从左到右分别找到数字 >= a 和 a。一旦找到,我会切换这些数字。

【问题讨论】:

  • 我只是好奇这个问题有什么缺陷,它被否决了。问题描述得很清楚,并提供了例子。它甚至不是重复的。

标签: python arrays algorithm


【解决方案1】:

这是一个 python 函数,可以为您提供预期的输出

# here A is list, and a is A[x]
def arrangeit(A, a):
    finalLst = [a]
    for i in A:
        if(i < a):
            finalLst = [i] + finalLst
        if(i > a):
            finalLst.append(i)

    return finalLst

A = [4,5,1,2]
a = A[0] #4

print(arrangeit(A, a))

【讨论】:

  • 解法正确清晰,但你能在O(1)空间复杂度下做到吗?
  • 使用deque会更有效
猜你喜欢
  • 2012-12-27
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 2020-06-27
  • 2017-11-15
  • 2014-03-29
  • 2018-11-01
  • 1970-01-01
相关资源
最近更新 更多