📜  最短无序子数组的 PHP 程序

📅  最后修改于: 2022-05-13 01:54:10.675000             🧑  作者: Mango

最短无序子数组的 PHP 程序

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

Input : n = 5
        7 9 10 8 11
Output : 3
Explanation : 9 10 8 unordered sub array.

Input : n = 5
       1 2 3 4 5
Output : 0 
Explanation :  Array is in increasing order.

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

PHP
= $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.
?>


输出 :
3

有关更多详细信息,请参阅有关最短无序子阵列的完整文章!