美文网首页
LeetCode 第581题:最短无序连续子数组

LeetCode 第581题:最短无序连续子数组

作者: 放开那个BUG | 来源:发表于2021-06-13 14:10 被阅读0次

    1、前言

    题目描述

    2、思路

    这道题最简单的思路是,首先将原数组复制出来,然后对复制的数组 arrays 进行排序,最后遍历复制数组 arrays 和原数组 nums,然后比较他们的每个位置的数,如果数字不想等,说明是经过排序变换了位置,那么更新 start、end 的值。

    3、代码

    public class Q581_FindUnsortedSubarray {
    
        public int findUnsortedSubarray(int[] nums) {
            if(nums == null || nums.length == 0){
                return 0;
            }
    
            int[] arrays = nums.clone();
            Arrays.sort(arrays);
    
            int start = nums.length, end = 0;
            for(int i = 0; i < nums.length; i++){
                if(nums[i] != arrays[i]){
                    start = Math.min(start, i);
                    end = Math.max(end, i);
                }
            }
    
            return end - start >= 0 ? end - start + 1 : 0;
        }
    
        public static void main(String[] args) {
            System.out.println(new Q581_FindUnsortedSubarray().findUnsortedSubarray(new int[]{2,6,4,8,10,9,15}));
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 第581题:最短无序连续子数组

          本文链接:https://www.haomeiwen.com/subject/tycveltx.html