您的位置:首页 > 游戏 > 游戏 > 惠州seo整站优化_销售软件哪个好用免费的_附近的教育培训机构有哪些_青岛网站建设运营推广

惠州seo整站优化_销售软件哪个好用免费的_附近的教育培训机构有哪些_青岛网站建设运营推广

2025/3/9 10:16:57 来源:https://blog.csdn.net/ziyuexuan2020/article/details/144403707  浏览:    关键词:惠州seo整站优化_销售软件哪个好用免费的_附近的教育培训机构有哪些_青岛网站建设运营推广
惠州seo整站优化_销售软件哪个好用免费的_附近的教育培训机构有哪些_青岛网站建设运营推广

[2717]半有序排列⭐

img

题目描述

给你一个下标从 0 开始、长度为 n 的整数排列 nums

如果排列的第一个数字等于 1 且最后一个数字等于 n ,则称其为 半有序排列 。你可以执行多次下述操作,直到将 nums 变成一个 半有序排列

选择 nums相邻的两个元素,然后交换它们。

返回使 nums 变成 半有序排列 所需的最小操作次数。

排列 是一个长度为 n 的整数序列,其中包含从 1n 的每个数字恰好一次。

示例输入

示例 1:

输入:nums = [2, 1, 4, 3]

输出:2

  1. 交换下标 0 和下标 1 对应元素。排列变为 [1, 2, 4, 3]
  2. 交换下标 2 和下标 3 对应元素。排列变为 [1, 2, 3, 4]

示例 2:

输入:nums = [4, 2, 1, 3]

输出:4

  1. 交换下标 0 和下标 1 对应元素。排列变为 [2, 4, 1, 3]
  2. 交换下标 1 和下标 2 对应元素。排列变为 [2, 1, 4, 3]
  3. 交换下标 0 和下标 1 对应元素。排列变为 [1, 2, 4, 3]
  4. 交换下标 2 和下标 3 对应元素。排列变为 [1, 2, 3, 4]

示例 3:

输入:nums = [1, 2, 3, 4, 5]

输出:0

不需要任何操作就是半有序序列。

题解

这个题思路还是比较清晰的。

我们要找到 1 在数组中的位置index1和 n 在数组中的位置index2

如果 1 在 n 的前面,那么很简单,我们要把 1 挪到最前面,把 n 挪到最后面。

而如果 n 在 1 的前面,我们在把 1 挪到最前面,把 n 挪到最后面这个过程中多交换了一次。因为数字 1 在移动到起始位置时,可能会与数字 n 交错。

public int semiOrderedPermutation(int[] nums) {int n = nums.length;int ans;int index1 = 0, index2 = 0;for (int i = 0; i < n; i++) {if (nums[i] == 1) {index1 = i;}if (nums[i] == n) {index2 = i;}}if (index1 < index2) {ans = index1 + n - 1 - index2;} else {ans = index1 + n - 1 - index2 - 1;}return ans;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com