Table of Contents
What is an unordered subarray?
Problem Statement
Shortest unordered subarray algorithm
Example
in conclusion
Home Web Front-end JS Tutorial JavaScript program for the shortest unordered subarray JavaScript program for the shortest unordered subarray

JavaScript program for the shortest unordered subarray JavaScript program for the shortest unordered subarray

Sep 01, 2023 pm 04:13 PM

最短无序子数组的 JavaScript 程序最短无序子数组的 JavaScript 程序

The problem statement requires finding the shortest unordered subarray in an array of integers. In other words, we need to determine the smallest subarray whose elements are not sorted in ascending or descending order. This problem can be solved in many ways, but in this article, we will discuss a simple yet effective solution using JavaScript.

So first we will start by defining what is an unordered subarray and then understand the problem statement in detail and then go on to explain the step by step solution using examples and code snippets. After reading this article, you will have a clear understanding of how to solve this problem in JavaScript. So let’s get started!

What is an unordered subarray?

An unordered subarray is a contiguous subarray of an array in which the elements are not arranged in ascending or descending order. In other words, the elements in the subarray are not arranged in increasing or decreasing order.

For example: [1, 2, 3, 5, 4, 6, 7] is an unordered subarray.

Problem Statement

Given an array of integers, we need to find the shortest unordered subarray. In other words, we need to find the smallest subarray whose elements are not sorted in ascending or descending order.

For example, let us consider the following array: const arr = [1, 2, 5, 4, 3, 6, 7]

In this case, the subarray [5, 4, 3] is the shortest unordered subarray.

Now let us understand the algorithm to solve this problem, and then we start implementing this algorithm using JavaScript.

Shortest unordered subarray algorithm

Input - array of n integers

Output - The length of the unordered shortest subarray

Step 1 - Initialization start = 0, end = n-1

STEP 2 - Traverse the array from left to right and find the first element that is larger than its right neighbor. Set its index to start.

STEP 3 - Traverse the array from right to left and find the first element that is smaller than its left neighbor. Set its index to end.

Step 4 - Find the smallest and largest element in the subarray from start to end.

STEP 5 - Iterate through the array from 0 to start-1 and find the index of the first element that is greater than the smallest element found in step 4. Set its index to the left.

STEP 6 - Iterate through the array from end 1 to n-1 and find the index of the first element that is less than the largest element found in step 4. Set its index to the right.

Step 7 - The length of the shortest unordered subarray is (right - left 1).

Example

In the following example, we first find the starting and ending indices of the unordered subarray by iterating the array from the beginning and the end respectively. We then find the smallest and largest elements in the subarray, and then traverse the array from the beginning and the end respectively to find the left and right indexes of the subarray.

Finally, we return the length of the shortest unordered subarray by subtracting the right index from the left index and adding 1.

function shortestUnorderedSubarray(arr) {
   let n = arr.length;
   let start = 0, end = n - 1;
   // find start index
   for (let i = 0; i < n - 1; i++) {
      if (arr[i] > arr[i + 1]) {
         start = i;
         break;
      }
   }
   // find end index
   for (let i = n - 1; i > 0; i--) {
      if (arr[i] < arr[i - 1]) {
         end = i;
         break;
      }
   }
   // find min and max element in subarray
   let min = arr[start], max = arr[start];
   for (let i = start + 1; i <= end; i++) {
      if (arr[i] < min) {
         min = arr[i];
      }
      if (arr[i] > max) {
         max = arr[i];
      }
   }
   // find left index
   let left = 0;
   for (let i = 0; i <= start; i++) {
      if (arr[i] > min) {
         left = i;
         break;
      }
   }
   // find right index
   let right = n - 1;
   for (let i = n - 1; i >= end; i--) {
      if (arr[i] < max) {
         right = i;
         break;
      }
   }
   // return length of shortest un-ordered subarray
   return right - left + 1;
}
// Example usage:
const arr = [1, 2, 5, 4, 3, 6, 7]
console.log("Array:", JSON.stringify(arr))
const len = shortestUnorderedSubarray(arr)
console.log("The length shortest un-ordered subarray: ", len);
// Output: 3, as [5, 4, 3] is the shortest un-ordered subarray with length 3.
Copy after login

in conclusion

We discussed every nuance of how to perform the shortest unordered subarray problem using JavaScript. We hope that with this article, people can easily find and fix issues related to unordered subarrays in their code.

The above is the detailed content of JavaScript program for the shortest unordered subarray JavaScript program for the shortest unordered subarray. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Replace String Characters in JavaScript Replace String Characters in JavaScript Mar 11, 2025 am 12:07 AM

Replace String Characters in JavaScript

Custom Google Search API Setup Tutorial Custom Google Search API Setup Tutorial Mar 04, 2025 am 01:06 AM

Custom Google Search API Setup Tutorial

Example Colors JSON File Example Colors JSON File Mar 03, 2025 am 12:35 AM

Example Colors JSON File

8 Stunning jQuery Page Layout Plugins 8 Stunning jQuery Page Layout Plugins Mar 06, 2025 am 12:48 AM

8 Stunning jQuery Page Layout Plugins

Build Your Own AJAX Web Applications Build Your Own AJAX Web Applications Mar 09, 2025 am 12:11 AM

Build Your Own AJAX Web Applications

What is 'this' in JavaScript? What is 'this' in JavaScript? Mar 04, 2025 am 01:15 AM

What is 'this' in JavaScript?

Improve Your jQuery Knowledge with the Source Viewer Improve Your jQuery Knowledge with the Source Viewer Mar 05, 2025 am 12:54 AM

Improve Your jQuery Knowledge with the Source Viewer

10 Mobile Cheat Sheets for Mobile Development 10 Mobile Cheat Sheets for Mobile Development Mar 05, 2025 am 12:43 AM

10 Mobile Cheat Sheets for Mobile Development

See all articles