半有序排列

tobegold574 Lv5

半有序排列(easy)

做题过程

没有想到什么优化,也确实也没有什么优化。

算法概述

原题

本题要求为求某一数组中将首元素和末尾元素移动到相应位置所需的操作次数,每次操作可交换两个相邻的元素位置。 模拟

  • 时间复杂度为O(n)
  • 空间复杂度为O(1)

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int semiOrderedPermutation(int[] nums) {
int n=nums.length;
int fir=0,last=0;
int res;
for(int i=0;i!=n;++i){
if(nums[i]==1) fir=i;
if(nums[i]==n) last=i;
}
// 就是分类讨论
if(fir>last) res=fir+n-1-last-1;
else res=fir+n-1-last;
return res;

}
}

总结

没什么要总结的。

  • Title: 半有序排列
  • Author: tobegold574
  • Created at : 2024-12-11 13:32:13
  • Updated at : 2024-12-11 13:35:19
  • Link: https://tobegold574.me/2024/12/11/半有序排列/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments