给定前 N 个自然数的排列作为数组 A[ ]。您的任务是通过两次交换对数组进行排序。如果可以对数组进行排序,则返回 True,否则返回 False。
注意:您可以将同一对索引交换两次。如果只有一个元素,则无法执行交换。
示例 1:
输入:
N = 4
A[] = {4, 3, 2, 1}
输出:是
解释:
swap(A[1], A[4]),现在 A[] = {1, 3, 2, 4}
swap(A[2], A[3]),现在 A[] = {1, 2, 3, 4}
示例 2:
输入:
N = 4
A[] = {4, 3, 1, 2}
输出:否
解释:

无法在 2 次交换中对数组进行排序。
您的任务:
任务是完成函数 check(),该函数以数组 A[ ] 及其大小 N 作为输入参数,如果可以在 2 次交换中对数组进行排序,则返回布尔值 True,否则返回 False。
约束:
1 ≤ N ≤ 10(5)
1 ≤ A[i] ≤ N
–
直接循环遍历即可。每次遇到不一样的,就交换这个元素跟对应的元素。
这里面要多写个i–,这样可以一直判断,算是整个程序的中枢了,我就是没想到这个。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/187391.html