最短非有序子阵

给出了一个长度为n的数组,问题是我们必须找到给定数组中最短的无序{不增不减}子数组的长度。 例如:

null
Input : n = 5        7 9 10 8 11Output : 3Explanation : 9 10 8 unordered sub array.Input : n = 5       1 2 3 4 5Output : 0 Explanation :  Array is in increasing order.

这个想法是基于这样一个事实,即最短子阵列的大小将是0或3。我们必须检查数组元素是否在增加或减少,如果所有数组元素都在增加或减少,则最短子数组的长度为0,如果其中一个数组元素不跟随增加或减少,则其最短长度为3。

C++

// CPP program to find shortest subarray which is
// unsorted.
#include <bits/stdc++.h>
using namespace std;
// bool function for checking an array elements
// are in increasing.
bool increasing( int a[], int n)
{
for ( int i = 0; i < n - 1; i++)
if (a[i] >= a[i + 1])
return false ;
return true ;
}
// bool function for checking an array
// elements are in decreasing.
bool decreasing( int a[], int n)
{
for ( int i = 0; i < n - 1; i++)
if (a[i] < a[i + 1])
return false ;
return true ;
}
int shortestUnsorted( int a[], int n)
{
// increasing and decreasing are two functions.
// if function return true value then print
// 0 otherwise 3.
if (increasing(a, n) == true ||
decreasing(a, n) == true )
return 0;
else
return 3;
}
// Driver code
int main()
{
int ar[] = { 7, 9, 10, 8, 11 };
int n = sizeof (ar) / sizeof (ar[0]);
cout << shortestUnsorted(ar, n);
return 0;
}


JAVA

// JAVA program to find shortest subarray which is
// unsorted.
import java.util.*;
import java.io.*;
class GFG {
// boolean function to check array elements
// are in increasing order or not
public static boolean increasing( int a[], int n)
{
for ( int i = 0 ; i < n - 1 ; i++)
if (a[i] >= a[i + 1 ])
return false ;
return true ;
}
// boolean function to check array elements
// are in decreasing order or not
public static boolean decreasing( int arr[], int n)
{
for ( int i = 0 ; i < n - 1 ; i++)
if (arr[i] < arr[i + 1 ])
return false ;
return true ;
}
public static int shortestUnsorted( int a[], int n)
{
// increasing and decreasing are two functions.
// if function return true value then print
// 0 otherwise 3.
if (increasing(a, n) == true ||
decreasing(a, n) == true )
return 0 ;
else
return 3 ;
}
// driver program
public static void main (String[] args) {
int ar[] = new int []{ 7 , 9 , 10 , 8 , 11 };
int n = ar.length;
System.out.println(shortestUnsorted(ar,n));
}
}
// This code is contributed by Akash Singh.


Python3

# Python3 program to find shortest
# subarray which is unsorted
# Bool function for checking an array
# elements are in increasing
def increasing(a, n):
for i in range ( 0 , n - 1 ):
if (a[i] > = a[i + 1 ]):
return False
return True
# Bool function for checking an array
# elements are in decreasing
def decreasing(a, n):
for i in range ( 0 , n - 1 ):
if (a[i] < a[i + 1 ]):
return False
return True
def shortestUnsorted(a, n):
# increasing and decreasing are two functions.
# if function return True value then print
# 0 otherwise 3.
if (increasing(a, n) = = True or
decreasing(a, n) = = True ):
return 0
else :
return 3
# Driver code
ar = [ 7 , 9 , 10 , 8 , 11 ]
n = len (ar)
print (shortestUnsorted(ar, n))
# This code is contributed by Smitha Dinesh Semwal.


C#

// Program to find the shortest
// subarray which is unsorted.
using System;
class GFG {
// boolean function to check
// array elements are in the
// increasing order or not
public static bool increasing( int [] a, int n)
{
for ( int i = 0; i < n - 1; i++)
if (a[i] >= a[i + 1])
return false ;
return true ;
}
// boolean function to check
// array elements are in the
// decreasing order or not
public static bool decreasing( int [] arr, int n)
{
for ( int i = 0; i < n - 1; i++)
if (arr[i] < arr[i + 1])
return false ;
return true ;
}
public static int shortestUnsorted( int [] a, int n)
{
// increasing and decreasing are
// two functions. function return
// true value then print 0 else 3
if (increasing(a, n) == true ||
decreasing(a, n) == true )
return 0;
else
return 3;
}
// Driver program
public static void Main()
{
int [] ar = new int [] { 7, 9, 10, 8, 11 };
int n = ar.Length;
Console.WriteLine(shortestUnsorted(ar, n));
}
}
// This code is contributed by vt_m.


PHP

<?php
// php program to find shortest
// subarray which is unsorted.
// bool function for checking an
// array elements are in increasing.
function increasing( $a , $n )
{
for ( $i = 0; $i < $n - 1; $i ++)
if ( $a [ $i ] >= $a [ $i + 1])
return false;
return true;
}
// bool function for checking an
// array elements are in decreasing.
function decreasing( $a , $n )
{
for ( $i = 0; $i < $n - 1; $i ++)
if ( $a [ $i ] < $a [ $i + 1])
return false;
return true;
}
function shortestUnsorted( $a , $n )
{
// increasing and decreasing are
// two functions. if function
// return true value then print
// 0 otherwise 3.
if (increasing( $a , $n ) == true ||
decreasing( $a , $n ) == true)
return 0;
else
return 3;
}
// Driver code
$ar = array ( 7, 9, 10, 8, 11 );
$n = sizeof( $ar );
echo shortestUnsorted( $ar , $n );
// This code is contributed by
// nitin mittal.
?>


Javascript

<script>
// JavaScript program to find shortest subarray which is
// unsorted.
// boolean function to check array elements
// are in increasing order or not
function increasing(a, n)
{
for (let i = 0; i < n - 1; i++)
if (a[i] >= a[i + 1])
return false ;
return true ;
}
// boolean function to check array elements
// are in decreasing order or not
function decreasing(arr, n)
{
for (let i = 0; i < n - 1; i++)
if (arr[i] < arr[i + 1])
return false ;
return true ;
}
function shortestUnsorted(a, n)
{
// increasing and decreasing are two functions.
// if function return true value then print
// 0 otherwise 3.
if (increasing(a, n) == true ||
decreasing(a, n) == true )
return 0;
else
return 3;
}
// Driver Code
let ar = [7, 9, 10, 8, 11];
let n = ar.length;
document.write(shortestUnsorted(ar,n));
// This code is contributed by chinmoy1997pal.
</script>


输出:

3

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享