时间复杂度(O(n)),思想:动态规划
class Solution {
public:
int minSwap(vector<int>& A, vector<int>& B) {
int step1 = -1 ;
int step2 = -1 ;
int moveTime=0;
for(int i=0;i<A.size();++i){
if(i==0){
if(A[i]==B[i]){
step1 = 0;
step2 = 0 ;
}else {
step1 = 0;
step2 = 1;
}
}else {
if(A[i]==B[i]){
if(step1>step2&&step2!=-1)step1=step2;
step2=-1;
}else {
if(A[i]>A[i-1]&&B[i]>B[i-1]
&&A[i]>B[i-1]&&B[i]>A[i-1]){
if(step1>step2&&step2!=-1)step1=step2;
step2=step1+1;
}else if(A[i]>A[i-1]&&B[i]>B[i-1]
&&(A[i]<=B[i-1]||B[i]<=A[i-1])){
step2 +=1;
}else if((A[i]<=A[i-1]||B[i]<=B[i-1])
&&(A[i]>B[i-1]&&B[i]>A[i-1])){
int tmp = step1;
step1=step2;
step2 = tmp+1;
}
}
}
}
if(step1>step2&&step2!=-1)step1=step2;
return step1;
}
};