• Java实现 LeetCode 775 全局倒置与局部倒置(分析题)


    775. 全局倒置与局部倒置

    数组 A 是 [0, 1, …, N - 1] 的一种排列,N 是数组 A 的长度。全局倒置指的是 i,j 满足 0 <= i < j < N 并且 A[i] > A[j] ,局部倒置指的是 i 满足 0 <= i < N 并且 A[i] > A[i+1] 。

    当数组 A 中全局倒置的数量等于局部倒置的数量时,返回 true 。

    示例 1:

    输入: A = [1,0,2]
    输出: true
    解释: 有 1 个全局倒置,和 1 个局部倒置。
    示例 2:

    输入: A = [1,2,0]
    输出: false
    解释: 有 2 个全局倒置,和 1 个局部倒置。
    注意:

    A 是 [0, 1, …, A.length - 1] 的一种排列
    A 的长度在 [1, 5000]之间
    这个问题的时间限制已经减少了。

    PS:
    分析题
    数组A中的元素是0到n-1
    这个题的两种倒置,一种是差1的倒置,一种是差好几位的倒置
    我们可以这么看,差1的倒置,只能一个,差好几位的倒置如果差的位置大于1
    那么差好几位的倒置一定会比差1的倒置多的
    所以这个题,就变成了,当前的位置如果比他的值差了2,那么就不相等了

    class Solution {
          public boolean isIdealPermutation(int[] A) {
            int N = A.length;
            int floor = N;
            for (int i=N-1; i>=2; --i) {
                floor = Math.min(floor, A[i]);
                if (A[i-2] > floor) return false;
            }
            return true;
        }
    }
    
  • 相关阅读:
    flutter 3des
    flutter踩坑记
    【OS_Windows】彻底关闭windows10自动更新
    使用 httpclient 上传下载文件
    git操作
    jmeter在Windows下请求https的接口
    python xlsxwriter简单使用
    asp.net core webapi 文件下载实现
    使用微信小程序连接到 MQTT 云服务
    MQTT.js 入门教程
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074575.html
Copyright © 2020-2023  润新知