zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    xml
    企业级应用和互联网应用的区别
    javaee学习目标
    数据库基本原理
    数据库学习感想
    数据库设计
    团队项目自我评价
    团队项目-软件度量
    团队项目-初级版本
    团队项目—详细设计
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/8439303.html
Copyright © 2011-2022 走看看