博客
关于我
LeetCode.581 Shortest Unsorted Continuous Subarray
阅读量:806 次
发布时间:2019-03-17

本文共 2372 字,大约阅读时间需要 7 分钟。

To solve this problem, we need to find the shortest continuous subarray such that sorting this subarray in ascending order would make the entire array sorted in ascending order as well.

Approach

The approach to solve this problem involves the following steps:

  • Sort the Array: First, we create a sorted version of the input array. This helps us identify the segments of the array that are out of order.

  • Identify Differences: We compare the original array with the sorted array to find the indices where they first differ (start of the unsorted segment) and where they last differ (end of the unsorted segment).

  • Determine the Subarray Length: The length of the shortest subarray that needs to be sorted is given by the range from the first differing index to the last differing index, inclusive.

  • Solution Code

    public class Solution {    public int findMinimumSubarrayLength(int[] nums) {        int n = nums.length;        int[] sorted = Arrays.copyOf(nums, n);        Arrays.sort(sorted);                int start = 0;        while (start < n && sorted[start] == nums[start]) {            start++;        }                if (start >= n) {            return 0;        }                int end = n - 1;        while (end >= 0 && sorted[end] == nums[end]) {            end--;        }                return end - start + 1;    }}

    Explanation

  • Sorting the Array: We create a sorted version of the input array to compare against the original array and identify the unsorted segments.

  • Finding the Start of the Subarray: By iterating through the original array, we find the first index where the value does not match the corresponding value in the sorted array. This index marks the beginning of the segment that needs to be sorted.

  • Finding the End of the Subarray: Similarly, by iterating from the end of the array, we find the last index where the value does not match the corresponding value in the sorted array. This index marks the end of the segment that needs to be sorted.

  • Calculating the Length: The length of the subarray is calculated as the difference between the end and start indices, plus one.

  • This approach ensures that we efficiently find the shortest subarray that, when sorted, will result in the entire array being sorted. The time complexity is dominated by the sorting step, making it (O(n \log n)), which is efficient for large arrays up to 10,000 elements.

    转载地址:http://ekjez.baihongyu.com/

    你可能感兴趣的文章
    Mysql数据库的条件查询语句
    查看>>
    MySQL数据库的高可用
    查看>>
    Mysql数据库相关各种类型的文件
    查看>>
    MYSQL数据库简单的状态检查(show processlist)
    查看>>
    MYSQL数据库简单的状态检查(show status)
    查看>>
    MySQL数据库系列
    查看>>
    MYSQL数据库自动本地/异地双备份/MYSQL增量备份
    查看>>
    mysql数据库表增添字段,删除字段、修改字段的排列等操作,还不快来
    查看>>
    MySQL数据库被黑了
    查看>>
    mysql数据库设计
    查看>>
    MySQL数据库设计与开发规范
    查看>>
    MYSQL数据库进阶操作
    查看>>
    MySQL数据库配置文件调优详解
    查看>>
    MySQL数据库酒店客房管理系统(含MySQL源码) 结课作业 做的不是很好
    查看>>
    mysql数据库里的一些坑(读高性能mysql有感)
    查看>>
    MySQL数据库面试题(2021最新版)
    查看>>
    MySQL数据库高并发优化配置
    查看>>
    mysql数据恢复
    查看>>
    MySQL数据的主从复制、半同步复制和主主复制详解
    查看>>
    mysql数据碎片整理
    查看>>