[leetcode-775-Global and Local Inversions]

Posted hellowOOOrld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode-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:

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

思路:

All local inversions are global inversions.
If the number of global inversions is equal to the number of local inversions,
it means that all global inversions in permutations are local inversions.
It also means that we can not find A[i] > A[j] with i+2<=j.
In other words, max(A[i]) < A[i+2]

In this first solution, I traverse A and keep the current biggest number cmax.
Then I check the condition cmax < A[i+2]

Here come this solutions:

 bool isIdealPermutation(vector<int>& A) 
 {
   int n = A.size() ,tmax= 0;    
   for(int i = 0;i<n-2;i++)
   {
     tmax = max(tmax,A[i]);
     if(tmax > A[i+2]) return false;
  }   
   return true;   
 }

还有就是根据题目给出的数据特点:数组中每一个元素都不重复 而且就是从0 到n-1的n个数,如果没有逆序存在的话,

那么每一个数字都会在自己的位置上;

I could only place i at A[i-1],A[i] or A[i+1]. So it came up to me, It will be easier just to check if all A[i] - i equals to -1, 0 or 1.

bool isIdealPermutation(vector<int>& A) {
        for (int i = 0; i < A.size(); ++i) if (abs(A[i] - i) > 1) return false;
        return true;
 }

 

参考:

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






以上是关于[leetcode-775-Global and Local Inversions]的主要内容,如果未能解决你的问题,请参考以下文章

成人网站PornHub跨站脚本(XSS)漏洞挖掘记

人民日报报道:伟大复兴!数字货币震撼来袭!

python 模块 SQLalchemy

要求的参考折叠规则的简明解释:(1) A& & -> A& , (2) A& && -> & , (3) && &a

Java String 将 '&' 替换为 & 而不是 & 到 &amp;

Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数