题目描述: 给你一个整数list L,现在只允许你有一种操作:交换列表中相邻的两个元素。 对于一个给定的L,请你输出至少需要多少次交换可以让L变成升序序列。 如:L=[2, 8, 0, 3],则输出3。 注解: 2 8 0 3 swap (8 0)=> 2 0 8 3 swap (2 0)=> 0 2 8 3 swap (8 3)=> 0 2 3 8
示例: 输入: L = [2, 8, 0, 3] 输出: 3
分析: 这个题目本质是 求 逆序对。 我这里使用最简单的一种方式,有兴趣的同学可以去 百度一下,有更多的题解。
代码:
1
2
3
4
5
6
ans = 0
for i, v in enumerate(L, 0):
for j in range(0, i):
if L[i] < L[j]:
ans += 1
print(ans)