小Q在学习许多排序算法之后灵机一动决定自己发明一种排序算法,小Q希望能将n个不同的数排序为升序。小Q发明的排序算法在每轮允许两种操作:
1、 将当前序列中前n-1个数排为升序
2、 将当前序列中后n-1个数排为升序
小Q可以任意次使用上述两种操作,小Q现在想考考你最少需要几次上述操作可以让序列变为升序。
小Q在学习许多排序算法之后灵机一动决定自己发明一种排序算法,小Q希望能将n个不同的数排序为升序。小Q发明的排序算法在每轮允许两种操作:
1、 将当前序列中前n-1个数排为升序
2、 将当前序列中后n-1个数排为升序
小Q可以任意次使用上述两种操作,小Q现在想考考你最少需要几次上述操作可以让序列变为升序。
输入包括两行,第一行包括一个正整数n(3≤n≤10^5),表示数字的个数
第二行包括n个正整数a[i](1≤a[i]≤10^9),即需要排序的数字,保证数字各不相同。
输出一个正整数,表示最少需要的操作次数
6 4 3 1 6 2 5
2
n=int(input().strip()) a=input().strip().split() for j in range(n): a[j]=int(a[j]) tmp=a.copy() tmp.sort() if a==tmp: print(0) elif a[0]==tmp[-1] and a[-1]==tmp[0]: print(3) elif a[0]==tmp[-1]&nbs***bsp;a[-1]==tmp[0]: print(2) elif a[0]==tmp[0]&nbs***bsp;a[-1]==tmp[-1]: print(1) else: print(2)
# 题目比较简单,在纸上画一画就能懂 def my_method(param) -> int: times = 0 sort_param = sorted(param) if sort_param == param: return 0 max_num, min_num = max(param), min(param) length = len(param) if param[length - 1] == min_num and param[0] == max_num: times += 3 if param[length - 1] != max_num: times += 1 if param[0] != min_num: times += 1 return times if __name__ == "__main__": counts = int(input()) tool_list = input().split() print(my_method(tool_list))