2717. Semi-Ordered Permutation ¶ Time: $O(n)$ Space: $O(1)$ C++JavaPython 1 2 3 4 5 6 7 8 9class Solution { public: int semiOrderedPermutation(vector<int>& nums) { const int n = nums.size(); const int index1 = find(nums.begin(), nums.end(), 1) - nums.begin(); const int indexN = find(nums.begin(), nums.end(), n) - nums.begin(); return index1 + (n - 1 - indexN) - (index1 > indexN ? 1 : 0); } }; 1 2 3 4 5 6 7 8 9 10 11 12 13 14class Solution { public int semiOrderedPermutation(int[] nums) { final int n = nums.length; int index1 = -1; int indexN = -1; for (int i = 0; i < nums.length; ++i) { if (nums[i] == 1) index1 = i; else if (nums[i] == n) indexN = i; } return index1 + (n - 1 - indexN) - (index1 > indexN ? 1 : 0); } } 1 2 3 4 5 6class Solution: def semiOrderedPermutation(self, nums: list[int]) -> int: n = len(nums) index1 = nums.index(1) indexN = nums.index(n) return index1 + (n - 1 - indexN) - int(index1 > indexN)