题目:给定长度为n的排列,每个数只存在一次,可以进行一种操作:让一个连续子序列里面的所有元素都重新排序,要求任何元素都不能出现在这次操作前的位置上。求将排列排好序的最小操作数
思路:只要存在一个以上的不连续子序列,就直接对整个数组进行两次排序,如果所有没排好序的元素都在一个连续的子序列里,那么就只需要进行一次操作
for _ in range(int(input())):
n = int(input())
a = [*map(int, input().split())]
t = 1
ans = 0
for i in range(n):
if i + 1 != a[i]:
if t > 0:
t = 0
ans += 1
else:
t = 1
print(min(ans,2))