美文网首页图解LeetCode算法
图解LeetCode——775. 全局倒置与局部倒置(难度:中等

图解LeetCode——775. 全局倒置与局部倒置(难度:中等

作者: 爪哇缪斯 | 来源:发表于2022-11-15 08:44 被阅读0次

一、题目

给你一个长度为 n 的整数数组 nums ,表示由范围 [0, n - 1] 内所有整数组成的一个排列。
全局倒置 的数目等于满足下述条件不同下标对 (i, j) 的数目:

  • 0 <= i < j < n
  • nums[i] > nums[j]

局部倒置 的数目等于满足下述条件的下标 i 的数目:

  • 0 <= i < n - 1
  • nums[i] > nums[i + 1]

当数组 nums全局倒置 的数量等于 局部倒置 的数量时,返回 true ;否则,返回 false

二、示例

2.1> 示例 1:

【输入】nums = [1,0,2]
【输出】true
【解释】有 1 个全局倒置,和 1 个局部倒置。

2.2> 示例 2:

【输入】nums = [1,2,0]
【输出】false
【解释】有 2 个全局倒置,和 1 个局部倒置。

提示:

  • n == nums.length
  • 1 <= n <= 5000
  • 0 <= nums[i] < n
  • nums 中的所有整数 互不相同
  • nums 是范围 [0, n - 1] 内所有数字组成的一个排列

三、解题思路

3.1> 根据前缀的最大值来判断

根据题目描述,我们可以得到如下结论:

如果是局部倒置,那么一定就是全局倒置。所以,全局倒置是包含局部倒置的。

那么我们就可以将解题视角放在非局部倒置全局倒置上。换句话说,也就是—— 非相邻数字是否满足递增。 具体操作如下图所示:

3.2> 根据偏移的差值来判断

由于题目中已经给出了如下一个关键条件:

数组nums长度为n,并且数字是由0到n-1构成的。

所以,就可以通过nums[i]-i计算出i位置的元素与有序后的位置之间的差值:

差值等于0】表示元素i所在的位置就是排序后的位置。
差值等于1】表示元素1所在的位置向前1位或向后1位。
其他情况】表示元素所在位置偏差大于1位,也就是出现了全局倒置并且非局部倒置的情况。

具体操作如下图所示:

四、代码实现

4.1> 根据前缀的最大值来判断

class Solution {
    public boolean isIdealPermutation(int[] nums) {
        int max = nums[0];
        for (int i = 2; i < nums.length; i++) {
            if (nums[i] < max) return false;
            max = Math.max(max, nums[i - 1]);
        }
        return true;
    }
}

4.2> 根据偏移的差值来判断

class Solution {
    public boolean isIdealPermutation(int[] nums) {
        for (int i = 0; i < nums.length; i++) 
            if (Math.abs(nums[i] - i) > 1) return false;
        return true;
    }
}

今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(o)/ ~ 「干货分享,每天更新」

相关文章

  • leetcode775 全局倒置与局部倒置

    题目 分析 局部倒置:理解为相邻两个值,前者大于后者。全局倒置:不一定相邻两个值,前者大于后者。根据上述内容可以得...

  • LeetCode 力扣 92. 反转链表 II

    题目描述(中等难度) 给定链表的一个范围,将这个范围内的链表倒置。 解法一 首先找到 m 的位置,记录两端的节点 ...

  • leetcode数据库类型:177. 第N高的薪水,难度:中等

    leetcode数据库类型:177. 第N高的薪水,难度:中等 解答: 由于本题不存在分组排序,只需返回全局...

  • JAVA IOC 与 DI

    依赖倒置、控制反转和依赖注入的区分 依赖倒置、控制反转和依赖注入的区分依赖倒置(Dependency Invers...

  • 倒置

    人们都知道桌子坏了用木头补,墙坏了用砖头补,可是身体坏了呢?都拿药来补,难道身体是药做成的吗?北京协和医院...

  • 倒置

    倒置 文/若兰花开 瑜伽体式中手肘倒立 是个让人上瘾的动作 随着脚尖抬起的那一刻 血液倒流能量充斥 全身满血复活的...

  • 倒置

    脚步喋喋不休地重沓 灌铅的腿儿 拖着脚镣的沉重 不睬夜神的魅惑 渴望轰然倒下的快意 头足倒置 提升委屈的下肢 贯通...

  • 倒置

    风儿在原野上嬉戏,穿过白云,也将稀疏的枝叶轻轻掠起,惊扰了我的梦境。 在梦境里,我的脚下长出根茎,它把我牢牢固定于...

  • 依赖倒置原则

    依赖倒置原则 “依赖倒置原则(Dependence Inversion Principle,DIP)” 定义: 高...

  • 依赖倒置原则(DIP)

    依赖倒置原则定义 依赖倒置原则(Dependence Inversion Principle ,DIP)定义如下:...

网友评论

    本文标题:图解LeetCode——775. 全局倒置与局部倒置(难度:中等

    本文链接:https://www.haomeiwen.com/subject/omusxdtx.html