最优做法确实应该是先算出每个元素的最终位置,比如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

相关推荐

牛客77743221...:做一段时间,公司出钱送你去缅甸和泰国旅游
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务