我可以在python而不是列表中使用类似c的数组,因为列表很慢

时间:2015-01-29 17:25:27

标签: python arrays list

http://www.hackerearth.com/problem/algorithm/little-deepu-and-array/

这是我用python解决的上述链接的问题。 但由于列表很慢,我无法通过时间限制传递所有测试用例,而在c ++中使用数组求解时,我通过了所有测试用例。

的Python:

n=input()
l=map(int,raw_input().split())
m=input()
for i in range(m):
    x=input()
    for j in range(n):
        if(l[j]>x):
            l[j]-=1
for i in range(n):
    print l[i],

C ++:

int main() 
{
    int n,numCalls,x,i,j;
    long int arr[1000000];

    cin>>n;

    for(i=0;i<n;i++)
        cin>>arr[i];

    cin>>numCalls;
    for(i=0;i<numCalls;i++)
    {
        cin>>x;
        for(j=0;j<n;j++)
            if(arr[j]>x)
                arr[j]-=1;
    }

    for(i=0;i<n;i++)
        cout<<arr[i]<<" ";
}

任何人都可以在python中有效地解决这个问题,以便所有测试用例都可以通过!!。

1 个答案:

答案 0 :(得分:0)

您的代码只需一次更改,使用Python数组初始化l

import array

n=input()
l=array.array('l', map(int, raw_input().split()))
m=input()
for i in range(m):
    x=input()
    for j in range(n):
        if(l[j]>x):
            l[j]-=1
for i in range(n):
    print l[i],