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

    思路:

    Key insights:

    • every local inversion is also a global inversion
    • so “local inversions == global inversions” can be interpreted as “there are only local inversions”
    • if there are only local inversions, the array will be sorted after making all local inversions
    • if there are inversions that are not local, the array won’t be sorted after making all local inversions
    class Solution {
        public boolean isIdealPermutation(int[] A) {
            for(int i = 0;i < A.length-1;){
                if(A[i]>A[i+1]){
                    int temp = A[i];
                    A[i] =A[i+1];
                    A[i+1] = temp;
                    i += 2;
                }else{
                    i++;
                }
            }
            for(int i = 0;i < A.length -1; i++){
                if(A[i]>A[i+1]){
                    return false;
                }
            }
            return true;
        }
    }
    
    
    public class Main {
        public static void main(String[] args){
            Solution solution = new Solution();
            int[] A = {1,2,0};
            solution.isIdealPermutation(A);
        }
    }
    

      

  • 相关阅读:
    MFC生成的exe程序不能在其他电脑上运行怎么办
    MFC开发软件支持多语言且同时支持xp和win7操作系统
    MFC创建模态对话框与非模态对话框
    如何定位BAD_ACCESS
    iOS中几种数据持久化方案
    iOS NSString相关问题
    SPU
    WIKI
    Mac怎么快速创建便签和发送附件的邮件
    利用你的Mission Control--设置快速回到桌面等操作
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/8419459.html
Copyright © 2011-2022 走看看