15 最短待排序子数组

0

对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。

给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。(原序列位置从0开始标号,若原序列有序,返回0)。保证A中元素均为正整数。

测试样例:[1,4,6,5,9,10],6返回:2

思路:记录当前的最大值max,以及max大于右边元素最右的位置right

记录当前的最小值min,以及min小于右边元素最左的位置left

right-left+1就是结果

import java.util.*;

public class Finder {
    public boolean findX(int[][] mat, int n, int m, int x) {
          int i=0;
        int j=m-1;
        while(i<=n-1&&j>=0){
          if(mat[i][j]>x){
            j--;
          }else if(mat[i][j]<x){
            i++;
          }else{
            return true;
          }
        }
        return false;
    }
}