Global and Local Inversions

medium arrays math

Problem

A permutation has equal global and local inversions iff every value differs from its index by at most 1. Determine whether this holds.

InputA=[1,0,2]
Outputtrue
The only inversion is local: A[0]=1 > A[1]=0.

def isIdealPermutation(A):
    for i, v in enumerate(A):
        if abs(v - i) > 1:
            return False
    return True
function isIdealPermutation(A) {
  for (let i = 0; i < A.length; i++)
    if (Math.abs(A[i] - i) > 1) return false;
  return true;
}
boolean isIdealPermutation(int[] A) {
    for (int i = 0; i < A.length; i++)
        if (Math.abs(A[i] - i) > 1) return false;
    return true;
}
bool isIdealPermutation(vector<int>& A) {
    for (int i = 0; i < (int)A.size(); i++)
        if (abs(A[i] - i) > 1) return false;
    return true;
}
Time: O(n) Space: O(1)