775. Global and Local Inversions 全局倒置与局部倒置

# 题目描述：

We have some permutation A of `[0, 1, ..., N - 1]`, where N is the length of A.

The number of (global) inversions is the number of `i < j` with `0 <= i < j < N` and `A[i] > A[j]`.

The number of local inversions is the number of i with `0 <= i < N` and `A[i] > A[i+1]`.

Return true if and only if the number of global inversions is equal to the number of local inversions.

Example 1:

``````Input: A = [1,0,2]
Output: true
Explanation: There is 1 global inversion, and 1 local inversion.
``````

Example 2:

``````Input: A = [1,2,0]
Output: false
Explanation: There are 2 global inversions, and 1 local inversion.
``````

Note:

1. A will be a permutation of [0, 1, ..., A.length - 1].
2. A will have length in range [1, 5000].
3. The time limit for this problem has been reduced.

# 解题方法

``````class Solution(object):
def isIdealPermutation(self, A):
"""
:type A: List[int]
:rtype: bool
"""
cmax = 0
for i in range(len(A) - 2):
cmax = max(cmax, A[i])
if cmax > A[i + 2]:
return False
return True
``````

``````class Solution(object):
def isIdealPermutation(self, A):
"""
:type A: List[int]
:rtype: bool
"""
for i, a in enumerate(A):
if abs(a - i) > 1:
return False
return True
``````

https://leetcode.com/problems/global-and-local-inversions/discuss/113644/Easy-and-Concise-Solution-C++JavaPython

# 日期

2018 年 10 月 1 日 —— 欢度国庆！