最优做法确实应该是先算出每个元素的最终位置,比如7的最终位置是6。然后继续处理6这个位置原有数字6的位置,6的位置是4,然后继续找位置4的这个数字的最终位置,位置4的数字是4,它的最终位置是1,然后7这个位置的数字是1,它的位置是1。这样我们处理的过程就是7->6->4->1->7,7覆盖6,6覆盖4,4覆盖1,1覆盖7,就会形成一个环。5->2->5,3->3也会形成环。然后这样的话就可以解决双指针覆盖数字的问题。时间复杂度 O(n),空间复杂度O(1)。
点赞 3

相关推荐

10-28 10:48
已编辑
门头沟学院 Java
孩子我想要offer:发笔试后还没笔试把我挂了,然后邮箱一直让我测评没测,后面不知道干嘛又给我捞起来下轮笔试,做完测评笔试又挂了😅
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务