python交换位置问题

交换

http://www.nowcoder.com/questionTerminal/26a114cbaba747f19e78bb6e270af6d0

将输入从小到大排序,作为正确的位置
用一个seat字典储存当下每个人的位置,key为学号,value为位置
遍历每个人,如果站错位置,就在seat中查找正确的人当下的位置,交换位置,并将次数加1

n = int(input())
data = []
for _ in range(n):
    x = int(input())
    data.append(x)


sorted_data = sorted(data)
seat = {x:i for (i,x) in enumerate(data)}
ans = 0
for i in range(n):
    if data[i] != sorted_data[i]:
        j = seat[sorted_data[i]]
        data[i],data[j] = data[j],data[i]
        seat[data[i]], seat[data[j]] = i, j
        ans += 1
print(str(ans))
全部评论

相关推荐

purcoter:虚拟货币预测正确率百分之99,还要找工作干嘛,不早就财富自由了
点赞 评论 收藏
分享
03-29 14:19
门头沟学院 Java
你背过凌晨4点的八股文么:加油同学,人生的容错率很高,只是一个暑期罢了,后面还有很多机会!
点赞 评论 收藏
分享
04-17 20:54
已编辑
湖南大学 Java
自我感觉答得不好,估计是挂了。但面试官人很好,氛围相对轻松。流程:常规自我介绍,20min项目,10min八股,30min算法,反问。项目:问了一些技术细节,以及改进方向。八股:1、http的默认端口号?(80)2、linux中查看进程监听端口号的命令?(不熟悉linux,答了个netstat -ntlp)3、UDP传输如何解决乱序问题?(没答上来,有个在包中添加序列号,但是忘记了)4、某个端口已经监听了UDP,是否能再监听TCP?(没答上来,答案是可以,面试官说这题很偏,不知道也正常)5、malloc分配的是栈内存还是堆内存?(堆)6、进程和线程的区别?(我答的进程是资源分配的最小单位,线程...
丰川打工祥:T8我觉得应该是:静态内部类是外部类的静态成员,独立于外部类的实例,而非静态内部类依赖于外部类的实例,可以访问外部类的所有成员。比如A是外部类,B是静态内部类,C是A的普通内部类。由于 B 是静态内部类,它属于外部类 A 的静态成员,因此可以直接通过 A.B 来创建静态内部类的实例,不需要先创建 A 的实例。而 C 是非静态内部类,它需要依赖外部类 A 的实例,因此必须先创建 A 的实例,然后才能通过这个实例来创建 C 的对象。所以,不能直接用 A.C 来创建 C 的实例。
腾讯一面1768人在聊 查看14道真题和解析
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务