对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。
给定一个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;
}
}
近期评论