Welcome to Subscribe On Youtube

775. Global and Local Inversions

Description

You are given an integer array nums of length n which represents a permutation of all the integers in the range [0, n - 1].

The number of global inversions is the number of the different pairs (i, j) where:

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

The number of local inversions is the number of indices i where:

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

Return true if the number of global inversions is equal to the number of local inversions.

 

Example 1:

 Input: nums = [1,0,2] Output: true Explanation: There is 1 global inversion and 1 local inversion. 

Example 2:

 Input: nums = [1,2,0] Output: false Explanation: There are 2 global inversions and 1 local inversion. 

 

Constraints:

  • n == nums.length
  • 1 <= n <= 105
  • 0 <= nums[i] < n
  • All the integers of nums are unique.
  • nums is a permutation of all the numbers in the range [0, n - 1].

Solutions

  • class Solution { public boolean isIdealPermutation(int[] nums) { int mx = 0; for (int i = 2; i < nums.length; ++i) { mx = Math.max(mx, nums[i - 2]); if (mx > nums[i]) { return false; } } return true; } } 
  • class Solution { public: bool isIdealPermutation(vector<int>& nums) { int mx = 0; for (int i = 2; i < nums.size(); ++i) { mx = max(mx, nums[i - 2]); if (mx > nums[i]) return false; } return true; } }; 
  • class Solution: def isIdealPermutation(self, nums: List[int]) -> bool: mx = 0 for i in range(2, len(nums)): if (mx := max(mx, nums[i - 2])) > nums[i]: return False return True 
  • func isIdealPermutation(nums []int) bool { mx := 0 for i := 2; i < len(nums); i++ { mx = max(mx, nums[i-2]) if mx > nums[i] { return false } } return true } 

All Problems

All Solutions