Last updated on October 5th, 2024 at 03:45 pm
Here, We see Shortest Unsorted Continuous Subarray LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
Topics
Array
Companies
Level of Question
Medium
Shortest Unsorted Continuous Subarray LeetCode Solution
Table of Contents
Problem Statement
Given an integer array nums, you need to find one continuous subarray such that if you only sort this subarray in a non-decreasing order, then the whole array will be sorted in a non-decreasing order. Return the shortest such subarray and output its length.
Example 1:
Input: nums = [2,6,4,8,10,9,15]
Output: 5
Explanation: You need to sort [6, 4, 8, 10, 9] in ascending order to make the whole array sorted in ascending order.
Example 2:
Input: nums = [1,2,3,4]
Output: 0
Example 3:
Input: nums = [1]
Output: 0
1. Shortest Unsorted Continuous Subarray Leetcode Solution C++
class Solution { public: int findUnsortedSubarray(vector<int>& nums) { int n = nums.size(); int l = -1, r = -1; for(int i = 0; i < n - 1; i++) { if(nums[i] > nums[i + 1]) { l = i; break; } } for(int i = n - 1; i >= 1; i--) { if(nums[i] < nums[i - 1]) { r = i; break; } } if(l == -1) return 0; int mini = nums[l], maxi = nums[l]; for(int i = l; i <=r; i++) { mini = min(mini, nums[i]); maxi = max(maxi, nums[i]); } l = upper_bound(nums.begin(), nums.begin() + l, mini) - nums.begin(); r = lower_bound(nums.begin() + r + 1, nums.end(), maxi) - nums.begin(); return r - l; } };
2. Shortest Unsorted Continuous Subarray Leetcode Solution Java
class Solution { public int findUnsortedSubarray(int[] nums) { int len = nums.length - 1, left = -1, right = -1, max = nums[0], min = nums[len]; for (int i = 1; i <= len; i++) { int a = nums[i], b = nums[len-i]; if (a < max) right = i; else max = a; if (b > min) left = i; else min = b; } return Math.max(0, left + right - len + 1); } }
3. Shortest Unsorted Continuous Subarray Leetcode Solution JavaScript
var findUnsortedSubarray = function(nums) { let len = nums.length - 1, left = -1, right = -1, max = nums[0], min = nums[len] for (let i = 1; i <= len; i++) { let a = nums[i], b = nums[len-i] a < max ? right = i : max = a b > min ? left = i : min = b } return Math.max(0, left + right - len + 1) };
4. Shortest Unsorted Continuous Subarray Leetcode Solution Python
class Solution(object): def findUnsortedSubarray(self, nums): lenN, left, right = len(nums) - 1, -1, -1 maxN, minN = nums[0], nums[lenN] for i in range(1, len(nums)): a, b = nums[i], nums[lenN-i] if a < maxN: right = i else: maxN = a if b > minN: left = i else: minN = b return max(0, left + right - lenN + 1)