首页 > 解决方案 > 交替重新排列数组[内存错误]

问题描述

我尝试解决 geeksforgeeks.org 关于“交替重新排列数组”的问题,在尝试输入示例时,我没有收到任何错误,但是当我尝试提交时,我收到“内存错误”

test_cases = "1"
for _ in range(int(test_cases)):
    new_array = []
    array_size = int("89")
    array = list(map(int, "1 9 16 18 72 88 98 100 127 128 150 155 160 174 185 196 198 200 218 226 267 270 279 284 299 309 326 335 335 351 355 369 383 394 399 400 413 422 422 429 438 440 446 483 507 529 529 542 553 556 567 571 578 594 611 640 642 652 658 658 663 673 694 717 723 736 762 763 775 777 778 784 806 816 828 851 853 854 889 891 911 932 953 955 958 973 977 986 998 ".split()))
    while len(array) != 0:
        if len(array) == 1:
            new_array.append(array[0])
            array.remove(array[0])
        else:
            max_array_value = max(array)
            min_array_value = min(array)
            new_array.append(max_array_value)
            new_array.append(min_array_value)
            array.remove(max_array_value)
            array.remove(min_array_value)

*旁注:让我们忽略为什么我以字符串格式而不是整数使用它,因为我试图复制来自 geeksforgeeks.org 的输入。*

当前代码仅适用于小数组,但不适用于非常大的数组。当我尝试创建一个超过 100 个整数的列表时,它会给我错误。我想知道是否有任何解决方法可以解决这样的问题?

标签: python

解决方案


def rearrange(arr, n): 

    k,j=1,1
    a=[0]*n
    for i in range(0,n):

        if i%2==0:
            a[i]=arr[n-k]
            k=k+1

        else:
            a[i]=arr[i-j]
            j=j+1
    for i in range(n):
        arr[i]=a[i]

推荐阅读