题解:
在global和local出现的情况相等时候,会发现,将local中出现逆序的情况反转,就能够得到一个升序排列的数组,
否则,如果swap两个逆序之后,不是升序的,会导致global的个数大于local的个数,如[1,2,0]中,2和0 交换后,不是升序
排列,除了2大于0,global的统计中1也大于0,因此glboal要比local的次数要多
bool isIdealPermutation(vector<int>& A) { if(A.size()<=1) return true; for(int i=1;i<A.size();i++) { if(A[i]==A[i-1]-1) { swap(A[i],A[i-1]); } else if((A[i]==A[i-1]+1)||(A[i]==A[i-1]+2)) { continue; } else { return false; } } return true; }
def isIdealPermutation(self,A): """ :type A: List[int] :rtype: bool """ if len(A)<=1: return True for i in xrange(1,len(A),1): if A[i]==A[i-1]-1: tmp=A[i] A[i]=A[i-1] A[i-1]=A[i] elif A[i]==A[i-1]+1 or A[i]==A[i-1]+2: continue else: return False return True