Lily's Homework

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjucor/article/details/82667180

https://www.hackerrank.com/challenges/lilys-homework/problem 

数组有序是最小的,反证法。

可以是顺序,逆序。

然后就是求数组长度减去环的个数。

一开始一直TLE,发现是hackerrank平台case没有给全,然后Python有事可以读取一行做list,what is the fuck......

# Complete the lilysHomework function below.
def lilysHomework(a):
    aa=sorted(a)
    d={v:i for i,v in enumerate(a)}
    
    vis=[False]*len(a)
    res=0
    for i in range(len(a)):
        if vis[i]: continue
        res+=1
        while not vis[i]:
            vis[i]=True
            i=d[aa[i]]
            
    aa=aa[::-1]
    vis2=[False]*len(a)
    res2=0
    for i in range(len(a)):
        if vis2[i]: continue
        res2+=1
        while not vis2[i]:
            vis2[i]=True
            i=d[aa[i]]
    
    return len(a)-max(res,res2)

猜你喜欢

转载自blog.csdn.net/zjucor/article/details/82667180