581.最短无序连续子数组

581. 最短无序连续子数组

难度简单375收藏分享切换为英文关注反馈

给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

你找到的子数组应是最短的,请输出它的长度。

示例 1:

输入:[2, 6, 4, 8, 10, 9, 15]

输出:5

解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。

说明 :

输入的数组长度范围在 [1, 10,000]。

输入的数组可能包含重复元素 ,所以升序的意思是<=。

代码

class Solution {

    public int findUnsortedSubarray(int[] nums) {

             int[] temp = new int[nums.length];

        System.arraycopy(nums, 0, temp, 0, nums.length);

        Arrays.sort(nums);

        int right = 0;

        int left = 0;

        for (int i = nums.length - 1; i > 0; i--) {

            if (nums[i] != temp[i]) {

                right = i;

                break;

            }

        }

        for (int i = 0; i < nums.length; i++) {

            if (nums[i] != temp[i]) {

                System.out.println("此时i为" + i);

                left = i;

                break;

            }

        }

        if(right - left == 0){

            return 0;

        }

        return right - left + 1;

    }

}

结果


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。