Leetcode 每日一题 #
给你一个下标从 0 开始、长度为
n
的整数排列nums
。如果排列的第一个数字等于
1
且最后一个数字等于n
,则称其为 半有序排列 。你可以执行多次下述操作,直到将nums
变成一个 半有序排列 :
- 选择
nums
中相邻的两个元素,然后交换它们。返回使
nums
变成 半有序排列 所需的最小操作次数。排列 是一个长度为
n
的整数序列,其中包含从1
到n
的每个数字恰好一次。
模拟 搜索 需要注意当开始位于结束后 交换次数少一次
func semiOrderedPermutation(nums []int) int {
var begin int
var end int
for k, v := range nums {
if v == 1 {
begin = k
}
if v == len(nums) {
end = k
}
}
if begin>end{
return begin+(len(nums)-1-end)-1
}
return begin+(len(nums)-1-end)
}