欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

部分排序,给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。

程序员文章站 2024-01-31 08:31:22
...
    题目:给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。

输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]
输出: [3,9]

class Solution {
    public int[] subSort(int[] array) {
        //将array拷贝到temp中
        int[] temp=array.clone();
        //将temp排好序(升序)
        Arrays.sort(temp);
        //双指针遍历
        int left=-1;
        int right=-1;
        for(int i=0;i<array.length;i++){
            if(array[i]!=temp[i]){
                //如果left等于-1时,证明此时i是乱序的开始下标,也就是m
                if(left==-1){
                    left=i;
                }
                //如果left不等于-1时,证明此时i是乱序的结束下标,也就是n
                right=i;
            }
        }
        return new int[]{left,right};
    }
}
相关标签: Java 排序算法