Lily's Homework

本文介绍了解决 HackerRank 上 Lily's Homework 问题的方法。该问题的核心在于找到使数组有序所需的最小步骤数,通过使用环的概念来计算,并考虑数组正序与反序两种情况以确定最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值